【问题标题】:InvokeHelper() throws Access is denied exceptionInvokeHelper() 抛出访问被拒绝异常
【发布时间】: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权限,结果是一样的。

任何帮助都会很棒!

【问题讨论】:

    标签: c++ .net windows com dcom


    【解决方案1】:

    问题的解决方法是:

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

    然后 -> Launch and Activation Permissions,点击 Edit Defaults 并添加 Network Service 给它本地启动和本地激活权限。对 \Users 执行相同操作。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2013-05-24
      • 2012-05-19
      • 2014-11-19
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多