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.
做同样的事情
社区,我有一个很有趣但同时又很沉重的问题。 我有 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.
做同样的事情