Как запустить COM-сервер вне процесса как другой (более привилегированный) пользователь - PullRequest
2 голосов
/ 13 мая 2009

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

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

Ответы [ 3 ]

1 голос
/ 13 мая 2009

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

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

1 голос
/ 13 мая 2009

Использовать 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).

1 голос
/ 13 мая 2009

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

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

...