在Windows阅读设备管理器的属性字段7/8
我开发一个Windows应用程序,这给现场的详细信息 - >十在Windows阅读设备管理器的属性字段7/8
其中X为 - >
右击我的电脑>
Properties >
Device Manager > (select any Item - Say KeyBoard) >
Click it > standard PS/2 KeyBoard >
double Click standard PS/2 KeyBoard >
click the Details Tab >
在该属性下有各种领域,如显示名称,问题代码,父母兄弟姐妹等,等等?
我想获得它们的值。 我可以使用哪种Windows API。 我这样做的Windows 7以及Windows 8.我希望API将保持不变。另外我有64位机器。 对于我想从设备管理器中知道的任何设备,这都是正确的。
此外,我只是想所有的操作 - 阅读和没有设置(写),所以我认为我不会有任何问题违反管理Rights.PLease建议。我添加了快照以供参考!例如,我想知道HID USB抱怨鼠标(D0(活动)或D2(睡眠))的当前状态。
我需要得到这个电源状态D0。
你将有最简单的时间(我认为)用PowerShell做到这一点。如果您正在编写一些C#代码,则可以使用System.Management.Automation命名空间中的类型(如PowerShell(链接:http://msdn.microsoft.com/en-us/library/system.management.automation.powershell(v=vs.85).aspx))执行PS脚本,但我会使用PS控制台开始测试。
你首先应该(使用PowerShell的)研究是否可使用此命令
Get-WmiObject -List -namespace root\CIMV2
然后在你的环境中的WMI对象,一旦你与类标识您正在寻找您可以使用此命令检索在该类的详细信息:
Get-WmiObject -namespace root\CIMV2 -class Win32_USBControllerDevice
一旦你有了这些内容,你就必须解析文本。
UPDATE:尝试使用这个命令来获得“国家”,“状态”和“入门”鼠标驱动程序的PC上的属性:
gwmi Win32_SystemDriver | where {$_.DisplayName -like "*Mouse*"}
这是很容易得到的硬件信息使用ManagementObjectCollection。
例如从PC处理器
var win32DeviceClassName = "win32_processor";
var query = string.Format("select * from {0}", win32DeviceClassName);
using (var searcher = new ManagementObjectSearcher(query))
{
ManagementObjectCollection objectCollection = searcher.Get();
foreach (ManagementBaseObject managementBaseObject in objectCollection)
{
foreach (PropertyData propertyData in managementBaseObject.Properties)
{
Console.WriteLine("Property: {0}, Value: {1}", propertyData.Name, propertyData.Value);
}
}
}
WIN32类名的完整列表获取所有属性和值可在http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx
干杯。
我运行x64,仍然有使用字符串“var win32DeviceClassName =”win32_processor“;” – Raulp 2013-03-06 08:40:31
这里的代码片段应该做你所问的。是的,将它复制到你的C#控制台项目的主要功能,它将枚举你的处理器的所有属性。 – 2013-03-07 05:02:08
你知道为什么当我试图将DateTime对象设置为“InstallDate”属性时出现类型不匹配吗? – 2013-08-27 12:03:31
问题用C#标记,虽然实际问题要求任何Window API。使用Win32 API可以通过SetupDiGetDeviceRegistryProperty()检索信息。步骤如下:
- 通过SetupDiGetClassDevs()获取您感兴趣的设备的设备信息。
- 通过SetupDiEnumDeviceInfo()遍历设备信息。
- 通过调用SetupDiGetDeviceRegistryProperty()获取属性。
- 销毁通过SetupDiDestroyDeviceInfoList()设置的设备信息。
根据文档,该API可在Windows 2000及更高版本上使用。
这是正确的答案。要按照问题中的要求查找电源状态,您需要使用SetupDiGetDeviceRegistryProperty查询SPDRP_DEVICE_POWER_DATA。 – donovan 2014-09-17 06:20:07
谢谢你,但我已经改进了这个问题。我想要的是什么与你所提供的安静不同。使用Power Shell,我可以获得所有USB设备的巨大列表,以及他不属于我的问题。请看一下快照,以便更清楚地了解问题。 – Raulp 2013-03-06 08:54:32
使用正确的查询,您可以获得精确的值。我可以改进我的回答 – 2013-03-07 14:11:23
Tha上面的命令为鼠标doesnt给变量像“电源数据? – Raulp 2014-01-28 09:07:29