InvokeHelper() 抛出访问被拒绝异常

InvokeHelper() throws Access is denied exception

社区,我有一个很有趣但同时又很沉重的问题。 我有 VB .NET 应用程序 + 服务 + C++ 应用程序。 C++ 应用程序生成一些数据并使用 InvokeHelper() 方法进行回调:

InvokeHelper(0x60030000, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
     eventType, eventValue);

第一个参数是应该调用的方法的dispid。奇怪的方法,但这不是我的代码,我不能这样改变。

在服务中,我使用 dispid 属性标记的方法从 C++ 应用程序获取此回调。

<DispId(&H60030000)>
Public Sub ServerEvent(ByVal vEventType As Integer, ByVal vEventValue As Object)
    RaiseEvent ControlPanelStateChange(vEventType, vEventValue)
End Sub

如果我以管理员身份登录,此代码可以正常工作。但是如果 windows 用户没有管理员权限,在调用 InvokeHelper() 方法之后会发生下一个异常:

First-chance exception at 0x75B7C42D (KernelBase.dll) in application.exe: 0x80070005: Access is denied

你有什么想法吗?我玩过DCOM权限,结果还是一样

任何帮助都会很棒!

问题的解决方法是:

DCOMCNFG,右击我的电脑和select属性->COM安全选项卡->访问权限->点击编辑默认值,添加网络服务,并赋予允许本地访问权限。为 < Machine_name >\Users.

做同样的事情

然后->Launch and Activation Permissions,点击Edit Defaults,添加Network Service,并赋予其Local launch和Local Activation权限。为 < Machine_name >\Users.

做同样的事情