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()方法后立即发生下一个异常:
application.exe中0x75B7C42D(KernelBase.dll)的第一次机会异常:0x80070005:访问被拒绝
你有什么想法吗?我玩过DCOM权限,但结果是一样的。
任何帮助都会很棒!
答案 0 :(得分:0)
问题的解决方案是:
DCOMCNFG,右键单击“我的电脑”,然后选择属性 - &gt; COM证券标签 - &gt;访问权限 - &gt;单击“编辑默认值”并向其添加“网络服务”并为其授予“允许本地访问权限”。为&lt;做同样的事情Machine_name&gt; \ Users。
然后 - &gt;启动和激活权限,单击编辑默认值并向其添加网络服务,并为其授予本地启动和本地激活权限。为&lt;做同样的事情Machine_name&gt; \ Users。