WMI RegDword getvalue и setvalue - PullRequest
       31

WMI RegDword getvalue и setvalue

1 голос
/ 16 декабря 2011

Я не могу получить данные REG_DWORD из раздела реестра USBSTOR, но я могу получить данные 'DisplayName' типа REG_SZ

ManagementScope myScope = new ManagementScope("\\\\" + strComputer + "\\root\\default");
ManagementPath mypath = new ManagementPath("StdRegProv");
ManagementClass mc = new ManagementClass(myScope, mypath, null);
ManagementBaseObject inParams = mc.GetMethodParameters("GetStringValue");
inParams["sSubKeyName"] = @"SYSTEM\CurrentControlSet\services\USBSTOR";
inParams["sValueName"] = "DisplayName";
ManagementBaseObject outParams = mc.InvokeMethod("GetStringValue", inParams, null);
Console.WriteLine(outParams["Type"].ToString());

1 Ответ

3 голосов
/ 16 декабря 2011

Вы должны использовать метод GetDWORDValue , если тип данных - REG_DWORD, и Метод GetStringValue , если тип данных - REG_SZ:

ManagementBaseObject inParams = mc.GetMethodParameters("GetDWORDValue");
inParams["sSubKeyName"] = @"SYSTEM\CurrentControlSet\services\USBSTOR";
inParams["sValueName"] = "Type";
ManagementBaseObject outParams = mc.InvokeMethod("GetDWORDValue", inParams, null);
UInt32 uValue = (UInt32)outParams["uValue"];
//...
ManagementBaseObject inParams = mc.GetMethodParameters("GetStringValue");
inParams["sSubKeyName"] = @"SYSTEM\CurrentControlSet\services\USBSTOR";
inParams["sValueName"] = "DisplayName";
ManagementBaseObject outParams = mc.InvokeMethod("GetStringValue", inParams, null);
string sValue = (string)outParams["sValue"];
...