2008-11-29 61 views
2

很抱歉,如果這是一個有點長whinded ...考慮這個問題:爲什麼我從代理調用COM +方法獲得E_ACCESSDENIED?

我有一個名爲公司命名空間使物體稱爲服務器它具有以下方法COM +應用程序:

bool Server.Execute(IOptions options) 

IOptions Server.CreateOptions() 

IOptions只是有幾個布爾讀/寫性能如下:

IOptions.Option1 (bool) 

IOptions.Option2 (bool) 

我創建了一個客戶端應用程序用下面的代碼lication:

Company.Server s = new Company.Server(); 

Company.IOptions serverOptions = s.CreateOptions(); 

serverOptions.Option1 = false; 
serverOptions.Option2 = true; 

s.Execute(serverOptions); 

我安裝COM +應用程序在計算機A上,然後在計算機A上執行客戶端,一切都很好。

我再修改客戶端應用程序,以便它會創建自己的實現IOptions如下:

public class ClientOptions : Company.IOptions 
{ 
    public bool Option1 { get; set; } 
    public bool Option2 { get; set; } 
} 

Company.Server s = new Company.Server(); 

ClientOptions clientOptions = new ClientOptions(); 

clientOptions.Option1 = false; 
clientOptions.Option2 = true; 

s.Execute(clientOptions); 

我再次執行計算機A上的客戶端應用程序,一切都很好。

如果我安裝在機器B上的COM +應用程序作爲代理機A,然後執行客戶端,我得到一個E_ACCESSDENIED錯誤的呼叫:

s.Execute(clientOptions); 

下面的代碼的執行上的總結機器B訪問機器A

Company.Server s = new Company.Server(); 

Company.Options serverOptions = s.CreateOptions() 

serverOptions.Option1 = false; 
serverOptions.Option2 = true; 

s.Execute(serverOptions); // this is fine 

ClientOptions clientOptions = new ClientOptions(); 

clientOptions.Option1 = false; 
clientOptions.Option2 = true; 

s.Execute(clientOptions); // this causes the error 

總之,我爲什麼能實現自己的IOptions,當客戶端在同一臺計算機上的COM +應用程序,但使用它的COM +應用程序不是在客戶端訪問COM +通過另一個代理應用程序機?

看來,如果IOptions是由服務器創建的,那麼它很好,但如果它是由客戶端創建的,那麼它不是。

任何幫助將不勝感激。

謝謝,

卡爾。

+0

我懷疑德克爾和287]莪是在正確的軌道與問候權限以來生效機器A正在執行從機器B的代碼,但其訪問權限設置是一個謎給我。 – Carl 2008-11-30 13:34:32

回答

1

嘗試通過dcomcnfg.exe查看遠程計算機上的COM服務器的遠程激活權限(應打開MMC管理單元)。

-Oisin

2

我去推斷與DCOM一些舊的經驗,這可能會或可能不會有幫助。當您訪問被拒絕時,您必須查看計算機B上的DCOM配置參數。

在較早的操作系統(Windows 2000)上,您將運行dcomcnfg。但在XP中,您從控制面板 - 管理工具運行組件服務。在Vista下,顯然,你必須運行windows \ System32 \ comexp.msc。

當您處於組件服務管理中時,突出顯示我的電腦並選擇屬性。你必須做的第一件事是在默認屬性選項卡,單擊此計算機上啓用分佈式COM。此外,您可能需要指定啓動和激活訪問權限COM安全標籤。這樣做時,您可能不得不同時處理編輯限制和編輯默認值?

請注意,我相信這些都是默認權限,因此您可能想找到你註冊的COM +應用程序在應用程序列表和設置應用程序特定的訪問權限,而不是機器範圍的默認值。但我知道,你必須檢查啓用此計算機上分佈式COM複選框。

我希望這會有所幫助。

相關問題