Как проверить в C #, установлен ли / удален драйвер устройства?
Я взглянул на этот вопрос: Как проверить, установлен ли драйвер? , который предлагает использоватьWin32_SystemDriver
Однако, если я удалю свой драйвер в диспетчере устройств Windows, он все равно будет найден этим запросом.Файл .sys
не удаляется из каталога C:\Windows\System32\drivers
(хотя я установил флажок для удаления файлов драйверов), хотя он и исчезает из диспетчера устройств.Но драйвер удаляется, потому что устройство теперь непригодно для использования, и на странице «Bluetooth и другие устройства» в настройках Windows (Windows 10), если я подключаю устройство, оно отображается в списке, но в сообщении под ним написано «Драйвернедоступен".Он остается в этом состоянии, пока я не переустановлю драйвер.
Вот мой код:
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.