Получить экземпляр COM из запущенной службы без повышения прав - PullRequest
0 голосов
/ 19 октября 2011

У меня есть служба C #, запущенная в сеансе 0, которая работает как COM-сервер.Я настраиваю COM-сервер следующим образом:

_cookie = _regServices.RegisterTypeForComClients(
            typeof(COMServer),
            RegistrationClassContext.LocalServer | RegistrationClassContext.RemoteServer,
            RegistrationConnectionType.MultipleUse);

Если я запускаю клиентское приложение от имени администратора, оно работает нормально и вызывает открытые функции, однако, если я запускаю клиент как обычный пользователь, CoCreateInstance завершается неудачнотребуется повышение прав.

Я пытался вызвать CoInitializeSecurity с сервера, как показано ниже;

UInt32 hResult = ComAPI.CoInitializeSecurity(
                IntPtr.Zero, // Add here your Security descriptor
                -1,
                IntPtr.Zero,
                IntPtr.Zero,
                ComAPI.RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
                ComAPI.RPC_C_IMP_LEVEL_IDENTIFY,
                IntPtr.Zero,
                ComAPI.EOAC_DISABLE_AAA
                | ComAPI.EOAC_SECURE_REFS
                | ComAPI.EOAC_NO_CUSTOM_MARSHAL,
                IntPtr.Zero);

Но это не удается из-за уже установленной безопасности.Могу ли я что-нибудь сделать со стороны сервера, чтобы разрешить подключения без повышенных прав?

Спасибо, J

...