【发布时间】:2015-10-11 22:45:52
【问题描述】:
社区,我有一个很有趣但同时又很重的问题。 我有 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()方法后会出现下一个异常:
application.exe 中 0x75B7C42D (KernelBase.dll) 处的第一次机会异常:0x80070005:访问被拒绝
你有什么想法吗?我玩过DCOM权限,结果是一样的。
任何帮助都会很棒!
【问题讨论】: