我正在寫一些代碼來執行遠程計算機上的wmi查詢和方法執行。我的登錄憑據是域管理員。當我在應用程序模式下運行時,每個工作正常。當我作爲服務運行時,由於默認帳戶服務使用isLocal System,因此它不會工作。當我將服務設置爲我的憑證運行時,遠程wmi也正常工作。作爲服務運行時連接到遠程機器的WMI
然而,這是不可取的,所以我試圖通過在IWbemLocator.ConnectServer上提供用戶名和密碼來連接到遠程wmi服務。我能夠成功取回IWbemServices對象。然而,當我試圖獲取類對象從IwbemServices下面對象,我得到了錯誤:
//IWbemServices *pSvc
const bstr_t objectPath("stdRegProv");
const bstr_t methodName("GetStringValue");
IWbemClassObject *pClass = NULL;
HRESULT hr = pSvc->GetObject(objectPath, 0, NULL, &pClass, NULL);
返回HR是0x80041003這是從這個鏈接「訪問被拒絕」:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394559%28v=vs.85%29.aspx。
通常,如果我提供了錯誤的用戶名和密碼,我將在IWbemLocator.ConnectServer上獲取拒絕訪問。所以我在這裏有點困惑,爲什麼連接是好的,但我無法獲得IWbemClassObject對象。由於它在使用我的域名憑證作爲服務帳戶時正在工作,因此必須存在一些安全性差異。我的WMI連接代碼基於MSDN上的此示例代碼:http://msdn.microsoft.com/en-us/library/windows/desktop/aa390418%28v=vs.85%29.aspx
我在微軟論壇上打開了另一篇文章:[MS Forum](http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/4161d6a1-1b52-4aa9-98b9-eacad5ba2a90/)在這個問題上它更深入。但它仍然沒有解決。 – windfly2006
您是否使用IWbemLocator.ConnectServer從遠程服務器連接到第三個主機? – Lizz