我正面臨一個相當奇怪和非常具體的DCOM相關問題,我希望有人可能遇到過它並解決它。Windows XP和Windows 7之間的DCOM互操作性
我想在Windows 7機器上的EXE服務器上實例化一個COM對象(稱之爲W7)。客戶端駐留在Windows XP機器上(稱之爲WXP)。在WXP上,登錄用戶是域用戶。在W7上,用戶是本地用戶。我(afaik)正確設置了所有DCOM權限,身份驗證和帳戶權限。沒有涉及防火牆。
我得到的只是COM7E服務器進程在W7上啓動,用戶名我期望,但似乎甚至沒有達到它的WinMain函數,並且保持掛起,除非我殺死它,否則永遠不會死亡。我可以附加一個遠程調試器(Visual Studio 2010),它會警告我這個進程可能會死鎖,當我將它分解時,它會停在消息隊列循環(GetMessage/Dispatch)中。
客戶端得到一個(貌似有效的)指針,但是任何嘗試使用它的結果都是E_ACCESSDENIED。
如果上述場景中的任何內容都發生更改,則COM對象的實例化會成功並且對象的行爲正確。
我知道找到答案的機會很小,但任何提示都非常受歡迎。
謝謝。
感謝您的回覆。我會盡快嘗試併發布結果。 令人困惑的是,相反的情況 - 客戶端在W7上(不在域中),服務器在WXP上(在域中) - 工作正常!它可以與本地WXP憑證(超出域)一起使用,也可以與域憑證一起使用。 – racanu 2012-07-21 06:51:47
我快速瀏覽了這篇文章,並注意到客戶端沒有取得憑證(即用戶名/密碼)。這使我認爲它不提供CoInitializeSecurity中的任何AuthInfo,這意味着它將匿名連接到服務器。我沒有爲我的服務器配置這種情況。爲了實驗的目的,我會這樣做,但我認爲這不會是生產代碼可以接受的解決方案。 – racanu 2012-07-21 07:01:19
我發現這篇文章,我最初錯過了,給了我一些想法,我可能會嘗試:http:// stackoverflow。com/questions/6123301/how-do-impersonation-in-dcom-work – racanu 2012-07-21 07:11:30