2008-08-21 59 views
5

我正在與服務器和客戶端上的兩臺機器,它們都帶有Service Pack 2上運行WinXP的兩臺機器DCOM應用程序,我登錄時使用的相同用戶名和密碼。DCOM:CoCreateInstanceEx返回E_ACCESSDENIED

當一臺計算機上的客戶端調用CoCreateInstanceEx,要求其他機器啓動服務器應用程序,它返回E_ACCESSDENIED。

我試圖進入服務器應用程序的組件屬性在DCOMCNFG,充分permisions大家的一切,但沒有幫助。

我需要做些什麼才能讓此通話成功?

更新:當服務器應用程序在Windows 2000機器上運行時,我不會收到此錯誤; CoCreateInstanceEx返回S_OK。

回答

1

三件事來檢查:

1)回到DCOMCNFG,並儘量確保不只是訪問的安全性,但也是「啓動權限」部分包含適當的安全用戶或組。

2)確保身份驗證級別設置爲「無」

3)別的其他還要檢查該組件位於磁盤上的位置是在安全權限配置的帳戶實際上訪問你設置。

編輯:

還有一個:你叫CoInitialiseSecurity()第一嗎?那響鈴!

EDIT2:

根據您的更新:嘗試在XP的機器完全丟棄的防火牆,看看是否有差別。您可能需要明確地讓DCOM通過。

2

正確,所以如果您的身份驗證級別設置爲默認。什麼是默認設置中設置的認證級別?只是出於興趣。 (雖然它的工作原理爲2000箱的事實可能會讓冗餘)

編輯:

另外:我好像記得做我以前玩DCOM /工作,所以也許快速重啓的很多當你對dcomcnfg設置感到滿意時,重新啓動兩臺機器也不會發生故障。

+0

[@Shaun Austin II:](http://stackoverflow.com/questions/20841#20930)全局默認身份驗證級別設置爲連接,並且默認模擬級別設置爲識別。 **更新:** ...我嘗試重新啓動,問題依然存在。感謝您的所有建議,但我仍然錯過了一些東西。 – 2008-08-21 19:59:31

0

什麼是你的Windows 2000框的味道,順便說一句?專業,服務器,服務器進階...

此外,有沒有兩者之間的域成員之間的差異(在一個域,其他沒有,不同的領域,等等...?)

還有一事情 - 有時DCOM錯誤會出現在系統事件日誌中 - 尤其是對象創建 - 您是否在那裏檢查線索?

0

我有完全相同的問題。 該問題發生在具有XP SP2 + OS或更新版本的機器上。

我解決它使用以下步驟:

  1. 驗證客戶端和服務器計算機都在同一個域。

  2. 您需要在兩臺計算機上使用相同的用戶,或者如果要在客戶端和服務器中使用不同的用戶,則需要確保客戶端和服務器用戶在兩臺計算機上都具有特權(特別是 - 使確保它們是分佈式COM用戶組的成員。

  3. 開放服務組元MMC(運行DCOMCNFG)。

  4. 轉到我的電腦「屬性 - >默認屬性,並確保默認Impersenation級別是」標識「

  5. 轉到COM安全選項卡,在訪問權限和啓動和激活權限中選擇編輯限制,並將本地和遠程訪問權限添加到COM應用程序的客戶端和服務器用戶。在端口135防火牆例外您的應用程序...

我希望這可以幫助你!

2

如果PC不是同一個域的成員,則還需要啓動&訪問「ANONYMOUS LOGON」的權限。 「每個人」都不包括這一點。

+0

這爲我做了訣竅.` – fakeleft 2012-06-13 13:57:30