InvokeHelper()抛出Access被拒绝exception

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

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

第一个参数是应该调用的方法的缺点。 奇怪的做法,但这不是我的代码,我不能改变这种方式。

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

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

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

application.exe中0x75B7C42D(KernelBase.dll)的第一次机会exception:0x80070005:访问被拒绝

你有什么想法? 我玩DCOM的权限,但结果是一样的。

任何帮助将是太棒了!

问题的解决方案是:

DCOMCNFG,右键单击我的电脑,然后选择属性 – > COM证券选项卡 – >访问权限 – >单击编辑默认值,并添加网络服务,并给它允许本地访问权限。 对<Machine_name> \ Users执行相同操作。

然后 – >启动和激活权限,单击编辑默认值,并添加网络服务,并给它本地启动和本地激活权限。 对<Machine_name> \ Users执行相同操作。