Я нахожусь в .Net 5 и обращаюсь к WMI в основном так:
ManagementScope managementScope = new("\\\\.\\ROOT\\WMI");
ManagementPath managementPath = new("BatteryFullChargedCapacity");
ManagementClass managementClass = new(managementScope, managementPath, null);
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
Проблема, с которой я сталкиваюсь, заключается в том, что не каждый путь WMI всегда присутствует. Как и в этом примере, BatteryFullChargedCapacity существует только на устройствах с батарейным питанием, таких как ноутбуки. Класс управления все еще создается, но вызов GetInstances()
приводит к исключению.
В настоящее время я ловлю исключение, но я бы предпочел проверить, существует ли класс/есть ли экземпляры, и отреагировать на результат. Кто-нибудь сейчас как это сделать?
Любая помощь высоко ценится!
GetInstances()
, не проверяя сначала, существует ли оно. В данном случае это может быть безопасно, потому что он рекурсивно выполняет итерацию, но я надеялся на более чистое/быстрое решение. Спасибо за подсказку! - person Dennis   schedule 18.05.2021