我有一个实现 IConnectionPoint 事件的 C++/ATL COM 服务器。我的客户端是一个附加到事件的 C# 应用程序。当 COM 服务器创建为 SYSTEM 服务时,客户端可以正确附加到事件。当 COM 服务器被创建为 LocalService 服务(首选)时,当我附加到事件时会收到 E_ACCESSDENIED 异常。
当 COM 服务器是 LocalService 时,我该怎么做才能使事件正常工作?
谢谢。
我有一个实现 IConnectionPoint 事件的 C++/ATL COM 服务器。我的客户端是一个附加到事件的 C# 应用程序。当 COM 服务器创建为 SYSTEM 服务时,客户端可以正确附加到事件。当 COM 服务器被创建为 LocalService 服务(首选)时,当我附加到事件时会收到 E_ACCESSDENIED 异常。
当 COM 服务器是 LocalService 时,我该怎么做才能使事件正常工作?
谢谢。
您需要找到 LocalService 尝试使用的用户,并确保该用户具有访问权限。如果您无法调整整台计算机的访问权限,则可能必须以编程方式使用CoInitializeSecurity
和使用已知具有访问权限的身份。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms679760(v=VS.85).aspx。