У меня есть служба 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