在Windows 7/8阅读设备管理器的属性字段(Reading Device Manager

2019-08-17 01:59发布

我正在开发一个Windows应用程序,这给现场的详细信息 - > X.

其中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位机的same.Also。 这必须是任何装置,它的细节,我想从设备管理器知道真实的。

还我只是想所有的操作 - 阅读和否设置(写),所以我想我不会有与违反管理Rights.PLease提出任何问题! 我已经加入快照,仅供参考!例如说我想知道的HID USB鼠标投诉(D0(活动)或D2(休眠))的当前状态。

我需要得到这个电源状态D0。

Answer 1:

这是很容易得到使用硬件信息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

干杯。



Answer 2:

问题是标签与C#,尽管实际问题问的任何窗口API。 与在Win32 API的信息可以与被检索SetupDiGetDeviceRegistryProperty() 。 具体的步骤是:

  1. 获取设备信息为你通过感兴趣的设备设置SetupDiGetClassDevs() 。
  2. 经由通过设备的相关信息进行迭代SetupDiEnumDeviceInfo() 。
  3. 通过调用SetupDiGetDeviceRegistryProperty获取属性()。
  4. 损坏设备信息经由设置SetupDiDestroyDeviceInfoList() 。

根据文档的API可用于Windows 2000及更高版本。



Answer 3:

你将有最简单的时间(我认为)与PowerShell的事情了。 如果你正在写一些C#代码,您可以使用在System.Management.Automation命名空间类型,如PowerShell的(链路执行PS脚本http://msdn.microsoft.com/en-us/library/system.management。 automation.powershell(v = vs.85)的.aspx ),但我会用PS控制台开始测试。

你首先应该(使用PowerShell)使用此命令探索您的环境中的WMI对象

Get-WmiObject -List -namespace root\CIMV2

然后,一旦你确定你正在寻找您可以检索使用此命令的那类信息类:

Get-WmiObject -namespace root\CIMV2 -class Win32_USBControllerDevice

一旦你的内容,你不得不分析文本。

更新:尝试使用这个命令来获得“国家”,“状态”,并在PC上的鼠标驱动程序的“入门”的属性:

gwmi Win32_SystemDriver | where {$_.DisplayName -like "*Mouse*"}


文章来源: Reading Device Manager's Property Fields in Windows 7/8