2013-02-11 4 views
5

Как заставить локальный COM-сервер запускаться под общей учетной записью (локальная система будет хорошей)? Документация RunAs кажется ее единственной для DCOM и не работает локально.COM из процесса сервера запускает несколько экземпляров

Проблема, с которой я сталкиваюсь, заключается в том, что мой CoCreateInstance вызывается из процессов, работающих на разных настольных компьютерах, и SCM в этом сценарии хочет запустить новый сервер для каждого рабочего стола, мне нужен только один instanse - как он был разработан!

+0

Будет ли это лучше подходит для [ServerFault?] (Http://serverfault.com/) – Piccolo

+0

DCOM также используется для локальных серверов. Вы пытались использовать 'DCOM Config' и меняли' Identity'? – sharptooth

+0

Несомненно, без разницы. Я бы ожидал, что в диспетчере задач появится SYSTEM, но когда я запустил из командной строки, он все еще работает под моим ID – user1371314

ответ

0

Что вы описываете, это системный сервис, а не 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-сервером, но, конечно, вы также можете запускать его как обычное приложение.

+0

Спасибо, понял. Я уже конвертирован в Windows Service и работает отлично. – user1371314

 Смежные вопросы

  • Нет связанных вопросов^_^