在Windows 7/8中读取设备管理器的属性字段

问题描述 投票:6回答:4

我正在开发一个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位计算机。对于我想从设备管理器中了解其详细信息的任何设备,这都必须是正确的。

[我也只想执行所有操作-读取和不设置(写),所以我认为违反管理员权限不会有任何问题。建议。!我添加了快照以供参考!例如说,我想知道HID USB投诉鼠标的当前状态(D0(活动)或D2(睡眠))。

“图像显示了HID兼容鼠标的Powerdata字段”我需要获得此电源状态D0。

我正在开发一个Windows应用程序,其中提供了字段详细信息->X。其中X是->右键单击“我的电脑”>“属性”>“设备管理器”>((选择任何项目-说...)>

< [

使用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中找到

欢呼声。

该问题用C#标记,尽管实际问题要求任何Window API。使用Win32 API,可以使用SetupDiGetDeviceRegistryProperty()检索信息。步骤将是:

通过SetupDiGetClassDevs()获取您感兴趣的设备的设备信息集。

    通过SetupDiEnumDeviceInfo()遍历设备信息。
  • 通过调用SetupDiGetDeviceRegistryProperty()获取属性。
  • 销毁通过SetupDiDestroyDeviceInfoList()设置的设备信息。
  • 根据文档,API在Windows 2000和更高版本上可用。
  • (我认为,您将拥有最简单的时间使用PowerShell。如果您正在编写一些C#代码,则可以使用System.Management.Automation命名空间中的类型(例如PowerShell(链接:http://msdn.microsoft.com/en-us/library/system.management.automation.powershell(v=vs.85).aspx))执行PS脚本,但我将使用PS控制台开始测试。
    您首先(使用PowerShell)应使用此命令在您的环境中浏览WMI对象

    Get-WmiObject -List -namespace root\CIMV2

    然后,您与班级标识在一起后,您可以使用以下命令检索有关该班级的详细信息:

    Get-WmiObject -namespace root\CIMV2 -class Win32_USBControllerDevice
    

    一旦有了该内容,就必须解析文本。

    UPDATE:

    尝试使用此命令来获取PC上鼠标驱动程序的“状态”,“状态”和“已启动”属性:

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

    CapabilitiesRequestAndCapabilitiesReply运行正常,当监视器关闭时返回零,否则返回功能字符串
  • windows c#-4.0 windows-7 device-manager
    4个回答
    3
    投票

    3
    投票

    通过SetupDiGetClassDevs()获取您感兴趣的设备的设备信息集。


    1
    投票
    您首先(使用PowerShell)应使用此命令在您的环境中浏览WMI对象

    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.