Я запускаю следующий код:
ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection colMObj = oMClass.GetInstances();
который выбрасывает это исключение:
System.Management.ManagementException: Not found
at System.Management.ThreadDispatch.Start()
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObject.Initialize(Boolean getObject)
at System.Management.ManagementClass.GetInstances(EnumerationOptions options)
at System.Management.ManagementClass.GetInstances()
Я пошел проверять запущенные службы в Windows XP и обнаружил, что служба инструментария управления Windows имеет статус "Начать". Я попробовал перезапустить службу, но это не принесло пользы. Затем я попытался получить статус этой службы из моего текущего кода с помощью класса ServiceController:
ServiceController wpiService = new ServiceController();
wpiService.ServiceName = "Winmgmt";
string wmiStatus = wpiService.Status.ToString();
MessageBox.Show("WMI status= " + wmiStatus);
wmiStatus оценивает значение "Выполнение".
Я видел эту ошибку только на одной из нескольких машин с одним и тем же программным обеспечением. Что особенность в том, что машина работала бесперебойно в течение нескольких месяцев, а затем внезапно начала показывать эту ошибку.
Есть ли какая-нибудь подсказка относительно того, что может быть причиной этого?
Решением было восстановление WMI в Windows XP. У меня нет подробного пошагового исправления (я не тот, кто внедрил исправление), но я понимаю, что репозиторий, связанный с этой службой, может быть поврежден, и есть утилита Windows, которая может ее восстановить. Есть несколько онлайн-ресурсов о том, как это сделать.
Я также столкнулся с этой проблемой. Вот один из ранее упомянутых онлайн-ресурсов, объясняющий, как можно исправить WMI: http://windowsxp.mvps.org/repairwmi.htm
Метод исправления, по-видимому, отличается от разных версий Windows, как описано на этой странице.
У меня была эта проблема ни в одной из этих версий, а в Windows Embedded Standard 2009. Поскольку Windows XP Service Pack 2 ближе всего относится к перечисленным операционным системам, это та, которую я использовал:
Для Windows XP с пакетом обновления 2 (SP2)
Нажмите "Пуск", "Выполнить" и введите следующую команду:
rundll32 wbemupgd, UpgradeRepository
Эта команда используется для обнаружения и восстановления поврежденного репозитория WMI. Результаты сохраняются в файле setup.log(% windir%\system32\wbem\logs\setup.log).