从没有提升的服务中获取COM实例

时间:2011-10-19 15:34:02

标签: c# .net c++ com dcom

我在会话0中运行了一个C#服务,它作为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);

但是由于已经设置了安全性,这会失败。我可以从服务器端做任何事情以允许非高架连接吗?

谢谢, Ĵ

0 个答案:

没有答案