2013-06-04 2 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

Какой результат вы получите? Исключение/ошибка, значение null или неожиданное значение? – Marcus

ответ

3

Вы должны установить значение параметра hDefKey (улей) и удалить куст из параметра sSubKeyName.

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