“無効な名前空間です” エラーの対処方法を簡単にするスクリプトを作ってみた。

2020-01-24

カラー icon icon by Icons8

一部のプログラムを実行すると、「無効な名前空間です」というメッセージが出るようになった。

いろいろ知らべて修復できたが、BATファイルを作るのがめんどうだったので、それらの処理を実行するPower Shellを作ってみた。

修復方法

はじめに

実行する場合は、自己責任でお願いします。

症状

以下の症状が発生。

  • 特定のプログラムで、"無効な名前空間です" エラーが発生
  • サービスの「Windows Management Instrumentation」は実行中。
  • wmimgmt.msc を起動 → [WMI コントロール] を右クリック → [プロパティ] → [詳細]タブで、[スクリプトで使用される既定の名前空間]の表示が「利用不可」、[変更]ボタンが選択できない。(写真は正常な状態)

対処方法

きちんと理解できていないのだが…

WMI リポジトリというものが壊れているのが、"無効な名前空間です"エラーの原因のひとつ。

レジストリのHKLM\Software\Microsoft\WBEM\CIMOM\Autorecover MOFsからMOFファイル一覧を取得して、mofcomp.exeでそれらをコンパイルし、WMI リポジトリに登録すれば、復旧できるらしい。

手順

  1. メニューに「power shell」と入力、表示されたアイコンを右クリックして「管理者として実行」を選択
  2. 下のコードをPower Shellの画面にコピペしてエンター
  3. 「MOF ファイルの解析中」「MOF ファイルが解析されました」「データベースにデータを格納しています…」「完了」の表示が何回も繰り返され、止まれば終了。
(Get-Item -Path "Registry::HKLM\Software\Microsoft\WBEM\CIMOM\").GetValue("Autorecover MOFs") | % {mofcomp.exe  $_} 

中でやっていること

  1. レジストリからMOFファイルの一覧を取得
  2. それらをひとつづつ、mofcomp.exeの引数に渡して実行

というわけで

これで症状が直らない場合もあるらしいので、ダメなら別の対処方法を。