Как я могу разрешить «Сбой загрузки провайдера» для запросов WMI? - PullRequest
8 голосов
/ 19 февраля 2009

Я использую WMI для сбора системной информации. Он отлично работает на всех системах, на которых я его тестировал, но у меня есть один или два пользователя, которые сообщают о проблемах. Журналы отладки показывают, что код WMI вызывает исключение «Ошибка загрузки провайдера». Я не смог повторить проблему.

Пользователи убедились, что служба WMI работает в автоматическом режиме.

Вот исключение:

System.Management.ManagementException: Provider load failure 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

Есть мысли о том, как устранить неполадки и решить эту проблему?

Ответы [ 5 ]

5 голосов
/ 25 февраля 2013

Один из способов, возможно, отследить основную причину проблемы - это использовать WBEMTest инструмент, который, по словам MS Scripting Guys, является одним из самых простых способов

«Чтобы найти поставщика класса WMI ...»

Сценаристы: Использование PowerShell для устранения неполадок «сбоя загрузки поставщика»

Шаги высокого уровня, специфичные для Win32_NetworkAdapter, описаны в этом сообщении Win32_network «сбой загрузки провайдера» пост Марка Вольцака на infoSupport.

  • Нажмите Пуск >> Выполнить >> wbemtest
  • нажмите «Подключить…», чтобы подключиться к пространству имен
  • выполнить запрос «Выбрать * из MSFT_WmiSelfEvent»
  • прокрутите вниз и проследите следующие события WMI
  • Посмотрите детали любого Msft_WmiProvider_InitializationOperationFailureEvent или Msft_WmiProvider_LoadOperationFailureEvent для dll, вызывающего проблему

Благодаря сообщению WMI – Provider Load Failure в блоге Ричарда Сиддэуэя за указание на этот инструмент и конкретную методологию.

2 голосов
/ 06 августа 2010

Итак, я знаю, что это старый, но у меня была точная проблема, описанная выше. Мне было очень сложно разобраться, поэтому я подумал, что отвечу в надежде, что это поможет кому-то еще.

Я пытался загрузить провайдер IIS WMI и получил ошибку «Ошибка загрузки провайдера». Я мог воспроизвести проблему, выполнив мой запрос WMI с помощью программы wbemtest.exe.

Я запустил procmon.exe, чтобы показать, что загружается (или не удается загрузить в моем случае), и, конечно же, wmiprvse.exe загружал раздел реестра, говоря, что inetsrv находится в каталоге C: \ windows - который не существовал на моей машине (C: \ windows был заменен на c: \ winnt)

Обновление ключа решило мою проблему, но суть в том, что у меня был один ад, пытаясь выяснить, почему я получаю эту ошибку, и запуск procmon при выполнении моего запроса WMI указал мне прямо на проблему. Надеюсь, это будет и для вас.

2 голосов
/ 03 марта 2010

В операционных системах с контролем учетных записей отключите UAC.

В моем случае: ответ Росса о не разрешен. Я мог бы загрузить некоторые поставщики WMI (логический диск), но не другие (IIS). Инструменты проводника WMI (такие как PowerGui) покажут поставщика. Это говорит о том, что политика безопасности может предотвратить загрузку поставщиков WMI. Как только UAC был выключен, все провайдеры WMI загружались без ошибок.

Конечно, вы можете оставить UAC включенным. Я обновлю этот ответ, если найду необходимые правила.

2 голосов
/ 19 февраля 2009

Возможно, вы захотите подтвердить, что все dll правильно зарегистрированы (см. http://msdn.microsoft.com/en-us/library/bb961987.aspx).

1 голос
/ 19 февраля 2009

Регистрация WMI проводится в WMI (статические классы.

WMI CIM Studio (часть WMI Tools от MS, IIRC) полезна для изучения этих классов (и, конечно, проще, чем написание большого количества запросов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...