2013-06-04 122 views
5

我正嘗試使用WMI讀取註冊表項。我已經嘗試使用以下代碼,但我無法獲取註冊表項值。使用WMI讀取註冊表項

任何人都可以幫我解決這個問題。

ConnectionOptions oConn = new ConnectionOptions(); 
System.Management.ManagementScope scope = new System.Management.ManagementScope(@"\\" +hostname + @"\root\cimv2", oConn); 

scope.Connect(); 
ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null); 
ManagementBaseObject inParams = registry.GetMethodParameters("GetStringValue"); 
inParams["sSubKeyName"] = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework"; 
inParams["sValueName"] = "InstallRoot"; 


ManagementBaseObject outParams = registry.InvokeMethod("GetStringValue", inParams, null); 

if (outParams.Properties["sValue"].Value != null) 
{ 
output = outParams.Properties["sValue"].Value.ToString(); 

} 

注意:我想通過僅使用WMI讀取註冊表項。

+1

你會得到什麼結果?異常/錯誤,空值或意外值? – Marcus

回答

3

您必須設置hDefKey(配置單元)參數的值,並從sSubKeyName參數中除去配置單元。

inParams["hDefKey"] =0x80000002;// HKEY_LOCAL_MACHINE; 
inParams["sSubKeyName"] = "SOFTWARE\\Microsoft\\.NETFramework";