Проверьте, существует ли класс управления WMI

Я нахожусь в .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() приводит к исключению.

В настоящее время я ловлю исключение, но я бы предпочел проверить, существует ли класс/есть ли экземпляры, и отреагировать на результат. Кто-нибудь сейчас как это сделать?

Любая помощь высоко ценится!


person Dennis    schedule 18.05.2021    source источник
comment
Отвечает ли это на ваш вопрос? проверьте, существует ли пространство имен WMI из С#   -  person Rand Random    schedule 18.05.2021
comment
Нет, не совсем. Повторение всего корневого пространства WMI кажется безумно неэффективным, к тому же он все еще вызывает GetInstances(), не проверяя сначала, существует ли оно. В данном случае это может быть безопасно, потому что он рекурсивно выполняет итерацию, но я надеялся на более чистое/быстрое решение. Спасибо за подсказку!   -  person Dennis    schedule 18.05.2021