2009-05-13 4 views
1

Я хотел бы создать COM-объект, который запускается на COM-сервере вне процесса как другой пользователь. Как мне это сделать?Как запустить COM-сервер вне процесса в качестве другого (более привилегированного) пользователя

У меня есть контроль над исходным кодом COM-сервера, и мой COM-клиент является единственным, который будет создавать эти COM-объекты.

ответ

1

Мы используем COM + для запуска объектов в качестве сетевого пользователя, который имеет определенные права, которые мы ему предоставили (в большинстве случаев для проверки подлинности Windows на SQL-сервер.) Что это не делает, это контролировать, кто может вызывать эти объекты, чтобы дозировать безопасность мы это дали.

В Vista и будущем есть возможность повышения уровня COM, которая делает именно то, что вы ищете. О, похоже, кто-то только что опубликовал это. Следуйте по ссылке, которую они оставили.

+0

Потратил меня на то, чтобы понять, как работает вся COM +, но теперь это похоже на то, что нужно. Спасибо за информацию –

1

Вы пишете это для Vista? Если это так, вы можете использовать специальный COM-вызов, который запускает COM-объект в повышенном состоянии. См. Статью this для более подробной информации.

Если вы не говорите о UAC, вы можете проверить функцию CoInitializeSecurity.

+0

Это должно быть для любой ОС, на которой работает Exchange Server. Windows 2003 и 2008 как минимум. –

+0

См. Мое обновление о CoInitializeSecurity. –

1

Использование RunAs - см. http://msdn.microsoft.com/en-us/library/ms680046(VS.85).aspx.

N.B. Этот параметр можно также настроить через dcomcnfg (Win2000) или comexp.msc (WinXP +) в разделе «Конфигурация DCOM»

Если ваш объект реализован как сервер InProc, вы можете комбинировать его с суррогатом DLL (см. http://msdn.microsoft.com/en-us/library/ms691260(VS.85).aspx).

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

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