Как получить аппаратные идентификаторы устройства без драйвера? - PullRequest
0 голосов
/ 31 мая 2018

В настоящее время я пишу решение для сканирования драйверов для более старых систем, таких как XP и Vista, и я хотел бы получить список аппаратных идентификаторов устройства, для которого не установлен драйвер.

SELECT * FROM Win32_PNPEntity возвращает список HardwareID, только если для устройства установлен драйвер.

Вот мой код:

string txt = "SELECT * FROM win32_PNPEntity";

        ManagementObjectSearcher deviceSearch = new ManagementObjectSearcher("root\\CIMV2", txt);
        foreach (ManagementObject device in deviceSearch.Get())
        {
            if (device["Status"].ToString() != "OK")
            {
                try
                {
                    foreach (var item in device.Properties)
                    {
                        Console.WriteLine(item.Name + ": " + item.Value);
                    }

                    Console.WriteLine("HardwareIDs:");
                    foreach (string id in (string[])device["HardwareID"]) { Console.WriteLine(id); }

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }

Спасибо

1 Ответ

0 голосов
/ 07 июня 2018

Для этого вы можете использовать библиотеку ORMi .Это очень просто решить.

1) Определите свой класс:

public class Win32_PnPEntity
{
    public string Caption { get; set; }
    public string Status { get; set; }
}

2) Доступ к WMI:

WMIHelper helper = new WMIHelper("root\\CimV2");

List<Win32_PnPEntity> devices = helper.Query<Win32_PnPEntity>().ToList().Where(p => p.Status == "Error");
...