Проверьте, не удален ли драйвер - PullRequest
0 голосов
/ 23 октября 2018

Как проверить в C #, установлен ли / удален драйвер устройства?

Я взглянул на этот вопрос: Как проверить, установлен ли драйвер? , который предлагает использоватьWin32_SystemDriver

Однако, если я удалю свой драйвер в диспетчере устройств Windows, он все равно будет найден этим запросом.Файл .sys не удаляется из каталога C:\Windows\System32\drivers (хотя я установил флажок для удаления файлов драйверов), хотя он и исчезает из диспетчера устройств.Но драйвер удаляется, потому что устройство теперь непригодно для использования, и на странице «Bluetooth и другие устройства» в настройках Windows (Windows 10), если я подключаю устройство, оно отображается в списке, но в сообщении под ним написано «Драйвернедоступен".Он остается в этом состоянии, пока я не переустановлю драйвер.

enter image description here

Вот мой код:

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SystemDriver");
var drivers = searcher.Get();

foreach (var driver in drivers)
{
    var deviceName = driver.GetPropertyValue("Name") == null ? "<<NULL>>" : driver.GetPropertyValue("Name").ToString();
    var deviceStatus = driver.GetPropertyValue("Status") == null ? "<<NULL>>" : driver.GetPropertyValue("Status").ToString();

    Console.WriteLine(string.Format("{0} - {1}", deviceName, deviceStatus ));
    Thread.Sleep(50);
}

Console.WriteLine("================");
Console.ReadKey();

deviceNameдает правильное имя драйвера, и deviceStatus «ОК» независимо от того, установлен драйвер или нет.

Я также отмечаю Windows 7, потому что решение должно работать в v7 и v10.

...