Что вы описываете, это системный сервис, а не COM-сервер. COM-сервер предназначен для работы под любым сеансом, а не под «сеансом 0» (службами) или с любым сеансом. Если вам требуется что-то, что работает только под 1 сеансом и имеет глобальный доступ ко всему остальному, вы должны использовать службу Windows, а не COM-сервер.
Если вам нужен аспект COM-сервера по другой причине, но вы хотите совместно использовать ресурсы по всему миру или все еще иметь «один процесс», который контролирует все, что вам нужно ... вы можете связать свой COM-сервер с вашим сервисом, используя IPC, который вы предпочитаете.
Кроме того, в ваших комментариях вы говорите «когда я запускаю из командной строки» - если вы запускаете EXE из командной строки, не имеет значения, зарегистрирован ли он как COM-сервер или нет, это просто запускается, как и любое другое EXE/приложение, что означает, что он работает как любой пользователь, которого вы его запускаете, в любом сеансе, в котором вы находитесь. Регистрация EXE в качестве COM-сервера позволяет другим процессам запускать этот EXE и связываться с ним через OLE/COM, но EXE все равно может работать как обычное приложение. Например, Microsoft Word и Outlook являются COM-серверами. То есть outlook.exe является COM-сервером, но, конечно, вы также можете запускать его как обычное приложение.
Будет ли это лучше подходит для [ServerFault?] (Http://serverfault.com/) – Piccolo
DCOM также используется для локальных серверов. Вы пытались использовать 'DCOM Config' и меняли' Identity'? – sharptooth
Несомненно, без разницы. Я бы ожидал, что в диспетчере задач появится SYSTEM, но когда я запустил из командной строки, он все еще работает под моим ID – user1371314