Недопустимый класс исключения запроса C # wmi с использованием ManagmentObjectSearcher

#c# #wmi #system.management

#c# #wmi #system.management

Вопрос:

Я пытаюсь запустить запрос wmi с помощью System.Management на c # и продолжаю получать недопустимый класс. Это для виртуальных рабочих столов wmware, использующих протокол pcoip. Я могу использовать WMI Explorer, и он показывает, как показано ниже.

введите описание изображения здесь

введите описание изображения здесь

Вот лишь некоторые примеры кода c #. Я знаю, что он не использует операторы «using», я просто пытаюсь сократить его. Я заметил, что если я выберу пространство имен верхнего уровня в проводнике WMI и попытаюсь запустить запрос, он завершится ошибкой с тем же недопустимым классом, а затем, если я нажму на ROOT CIMV2 и выполню запрос, он будет работать нормально. Я проверил путь в области видимости и т.д., И он кажется правильным. Я не могу использовать Microsoft.Management.Также инфраструктура.

             var scope = new ManagementScope(ManagementPath.DefaultPath);
            var query = new SelectQuery("SELECT * from Win32_PerfRawData_TeradiciPerf_PCoIPSessionImagingStatistics");
            scope.Connect();
            var searcher = new ManagementObjectSearcher(scope, query);
            var collection = searcher.Get();
  

Обратите внимание, что я могу использовать powershell и извлекать с помощью

 Get-WmiObject -Class "Win32_PerfRawData_TeradiciPerf_PCoIPSessionImagingStatistics"
  

ОБНОВЛЕНИЕ: Странно, но я заметил, что могу видеть в WMI Explorer, но при использовании WMI Code Creator я не вижу.

Ответ №1:

LMAO… Ну, увидев, что он работает в WMI Explorer, но не в WMI Code Creater, я задумался, особенно после просмотра исходного кода WMI Explorer и понимания, что он делает то же самое, что и я, с помощью кода. Посмотрел в диспетчере задач и обнаружил, что WMI Explorer работает как 64-разрядное приложение, в то время как WMI Code Creator работает в 32-разрядном. Ну, после компиляции в 64, что вы знаете, это работает. Я ошибочно предположил, что у всех поставщиков WMI была 32-разрядная и 64-разрядная версии, что, очевидно, не так. Отличная новость в том, что я хотел использовать счетчики производительности вместо WMI, и что вы знаете, после компиляции как 64 с использованием счетчиков производительности вместо запросов WMI теперь я также могу видеть категории счетчиков производительности. Надеюсь, это мой последний момент в этом году.