WMI RegDword getvalue和setvalue

时间:2011-12-16 12:37:44

标签: c# registry wmi

我无法从USBSTOR注册表项获取REG_DWORD数据,但我可以获得REG_SZ类型的'DisplayName'数据

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 个答案:

答案 0 :(得分:3)

如果数据类型为REG_DWORD,则应使用GetDWORDValue方法;如果数据类型为REG_SZ,则应使用GetStringValue方法:

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"];