2015-07-22 92 views
0

社區,我有相當有趣的同時又有很大的問題。我有VB .NET應用程序+服務+ C++應用程序。 C++應用程序生成一些數據並使用InvokeHelper()方法進行回調:InvokeHelper()拋出Access被拒絕異常

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()方法中的下一個異常後立即發生:0X80070005:

在0x75B7C42D(KernelBase.dll)在application.exe第一次機會異常訪問被拒絕

你有什麼想法嗎?我玩過DCOM權限,但結果是一樣的。

任何幫助將是太棒了!

回答

0

問題的解決方案是:

DCOMCNFG,右鍵單擊我的電腦,選擇屬性 - > COM證券選項卡 - >訪問權限 - >點擊編輯默認值,並添加網絡服務給它,並給它允許本地訪問權限。對於< Machine_name> \ Users執行相同操作。

然後 - >啓動和激活權限,單擊編輯默認值並添加網絡服務,並給它本地啓動和本地激活權限。對於< Machine_name> \ Users執行相同操作。

相關問題