System.Management:window系统的设备访问

文章介绍了如何使用C#的System.Management命名空间中的ManagementObjectSearcher类,通过查询Win32_PnPEntityWMI类,按名称、PNPClass(如Camera)或Service(如kbdhid,usbvideo)筛选设备信息,获取设备名称、描述和属性。
摘要由CSDN通过智能技术生成

获取设备管理对象,并指定查询条件,以便仅获取相机设备信息:

using System.Management;

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity  "); 
foreach (ManagementObject device in searcher.Get())
{
var name = device["Name"];
if (device["Name"] == null)
{
continue;
}
// 这里可以输出或者处理相机设备信息
Console.WriteLine("设备名称: " + device["Name"].ToString());
Console.WriteLine("设备描述: " + device["Description"].ToString());
Console.WriteLine();
// 获取设备的功能信息
PropertyDataCollection properties = device.Properties;
Console.WriteLine("设备属性:");
foreach (PropertyData property in properties)
{
Console.WriteLine(property.Name + ": " + property.Value);
}

}

根据你的设备的名称来查询,设备的所有属性:

using System;
using System.Management;

class Program
{
    static void Main()
    {
        string targetDeviceName = "YourTargetDeviceName"; // 替换为你要查找的设备名称

        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%" + targetDeviceName + "%'");

        foreach (ManagementObject device in searcher.Get())
        {
            string deviceName = device["Name"].ToString();
            string deviceDescription = device["Description"].ToString();
            string deviceId = device["PNPDeviceID"].ToString();

            // 获取设备的所有属性
            PropertyDataCollection properties = device.Properties;
            Console.WriteLine("设备属性:");
            foreach (PropertyData property in properties)
            {
                Console.WriteLine(property.Name + ": " + property.Value);
            }

            Console.WriteLine("设备名称: " + deviceName);
            Console.WriteLine("设备描述: " + deviceDescription);
            Console.WriteLine("设备ID: " + deviceId);
        }
    }
}

根据你的设备的属性来查询,如相机类camera:

用PNPClass = 'Camera',还可以用Service = “。。。。”

using System;
using System.Management;

class Program
{
    static void Main()
    {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'Camera'");

        foreach (ManagementObject device in searcher.Get())
        {
            string deviceName = device["Name"].ToString();
            string deviceDescription = device["Description"].ToString();
            string deviceId = device["PNPDeviceID"].ToString();

            // 在这里输出或处理设备信息
            Console.WriteLine("设备名称: " + deviceName);
            Console.WriteLine("设备描述: " + deviceDescription);
            Console.WriteLine("设备ID: " + deviceId);
        }
    }
}

System.Management 命名空间中,PNPClass 表示设备的 Plug and Play(PNP,即即插即用)类别。Plug and Play 类别是用于标识设备类型的分类,帮助操作系统识别和管理不同类型的硬件设备。这些类别通常在设备管理和设备识别中使用。

PNPClassWin32_PnPEntity WMI 类的一个属性,用于描述设备的 PNP 类别。通过查询 PNPClass 属性,你可以检索设备的 PNP 类别信息,以了解设备类型或类别。

不同的设备会被分配不同的 PNP 类别,例如,摄像头设备通常分配给 "Camera" 类别,磁盘驱动器通常分配给 "DiskDrive" 类别,键盘通常分配给 "Keyboard" 类别,等等。根据设备的 PNP 类别,操作系统可以采取适当的措施来加载所需的驱动程序和配置设备。

在 System.Management 命名空间中,Service 不是一个标准的属性或类别,而是一个一般性的概念,用于表示与设备或服务相关的服务名称。具体来说,Service 可能对应于设备的服务或驱动程序的名称,这取决于操作系统和设备类型。

如:Service:kbdhid 是一个描述 Windows 设备管理的字符串,它涉及到键盘设备的驱动程序和服务。具体来说,kbdhid 是键盘设备的驱动程序服务名称,用于表示 Human Interface Device (HID) 类型的键盘设备。

Service:usbvideo 是一个描述 Windows 设备管理的字符串,它涉及到 USB 视频设备的驱动程序服务名称。具体来说,usbvideo 是 USB 视频设备的驱动程序服务名称,通常用于表示通过 USB 接口连接的摄像头或其他视频捕获设备。

文章引用:

ManagementObjectSearcher - C#获得计算机硬件信息和操作系统信息(转载) - 懒猫VS - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/msjqd/articles/14848662.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值