我无法从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());
答案 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"];