很抱歉,如果這是一個有點長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是由服務器創建的,那麼它很好,但如果它是由客戶端創建的,那麼它不是。
任何幫助將不勝感激。
謝謝,
卡爾。
我懷疑德克爾和287]莪是在正確的軌道與問候權限以來生效機器A正在執行從機器B的代碼,但其訪問權限設置是一個謎給我。 – Carl 2008-11-30 13:34:32