Windows
 Computer >> コンピューター >  >> システム >> Windows

WMIリポジトリのリセットに失敗するエラー0x80070005・0x8007041B・0x80041003の原因と対処法

WMI(Windows Management Instrumentation)は、WMIクラスのメタ情報や定義を格納するデータベースであり、管理者がリモートシステムを含むさまざまなWindows環境を管理するために利用されています。WMIリポジトリが破損すると、WMIサービスが正常に動作しなくなり、リモートサーバーへの接続時に「資格情報が正しくない」「権限が不足している」「アクセスが拒否されました」といったエラーが発生することがあります。

本記事では、WMIリポジトリのリセット失敗エラー(0x80070005、0x8007041B、0x80041003)を解決するための具体的な方法を解説します。これらのエラーの説明欄には、「アクセスが拒否されました(Access denied)」または「アクセスは拒否されました(Access is denied)」と表示されます。

WMIリポジトリのリセット失敗エラー0x80070005、0x8007041B、0x80041003とは

これらのエラーは、DCOMレベルの権限の問題、またはWMIレベルの権限の問題によって発生します。解決策を紹介する前に、まず完全なエラーメッセージを確認しておきましょう。

WMIリポジトリの検証に失敗しました
エラーコード: 0x80041003
機能(Facility): WMI
説明: アクセスが拒否されました

WMIリポジトリのリセットに失敗しました
エラーコード: 0x80070005
機能(Facility): Win32
説明: アクセスは拒否されました

上記のエラーメッセージには、エラーコードに加えて「機能(Facility)」と「説明」が表示されます。

Facility: Win32 と表示されている場合は、DCOMレベルのセキュリティ権限に問題があることを意味します。つまり、リモートサーバーへの接続に使用しているアカウントに、WMI経由でリモートデバイスへアクセスするためのDCOMレベルのセキュリティ権限がない状態です。

Facility: WMI と表示されている場合は、WMIレベルのセキュリティ権限に問題があることを意味します。つまり、WMI名前空間へのアクセスに使用しているアカウントに、WMIレベルのセキュリティ権限が付与されていない状態です。

これらの問題を解決するために、以下の3つの方法を試してみてください。

  1. WBEMリポジトリのクリーンアップ
  2. WMI値の再構築
  3. DCOM権限の確認

それでは、それぞれの修正手順を見ていきましょう。

1. WBEMリポジトリをクリーンアップする

まず、WBEMリポジトリをクリーンアップして問題が解決するか確認します。手順は以下の通りです。

コマンドプロンプトを管理者として起動し、次のコマンドを入力してEnterキーを押します。

net stop winmgmt

確認を求められたら Y を選択して承認します。コマンドが正常に実行されるまで待ちます。

続いて、以下のコマンドをコピーしてコマンドプロンプトに貼り付け、Enterキーを押します。

C:\Windows\System32\wbem\Repository*

確認を求められたら Y を選択します。その後、「Exit」と入力してEnterキーを押すと、コマンドプロンプトが閉じます。

パソコンを再起動し、再起動後数分待ってから問題が解決したかどうかを確認してください。

この方法で解決しない場合は、次のWMI値の再構築を試みてください。

2. WMI値を再構築する

前述の通り、これらのエラーはユーザーにWMI操作の実行権限がない場合に発生します。WMI値を再構築することで、この問題を解決できる可能性があります。

Windowsパソコンでメモ帳を開き、以下のコマンドをコピーして貼り付けます。

@echo on 
cd /d c:\temp 
if not exist %windir%\system32\wbem goto TryInstall 
cd /d %windir%\system32\wbem 
net stop winmgmt 
winmgmt /kill 
if exist Rep_bak rd Rep_bak /s /q 
rename Repository Rep_bak 
for %%i in (*.dll) do RegSvr32 -s %%i 
for %%i in (*.exe) do call :FixSrv %%i 
for %%i in (*.mof,*.mfl) do Mofcomp %%i 
net start winmgmt 
goto End 

:FixSrv 
if /I (%1) == (wbemcntl.exe) goto SkipSrv 
if /I (%1) == (wbemtest.exe) goto SkipSrv 
if /I (%1) == (mofcomp.exe) goto SkipSrv 
%1 /Regserver 
:SkipSrv 
goto End 
:TryInstall 
if not exist wmicore.exe goto End 
wmicore /s 
net start winmgmt 
:End

ファイル名を「WMI.bat」として保存し、メモ帳を閉じます。次に、WMI.batファイルを右クリックして「管理者として実行」を選択します。これによりWMI値が再構築されます。

WMI値の再構築を実行した後、以下の手順でWMIの権限を確認しましょう。

デスクトップの「PC」アイコンを右クリックし、「管理」を選択します。「コンピューターの管理」画面が起動します。

左側の「コンピューターの管理(ローカル)」をダブルクリックして展開し、続いて「サービスとアプリケーション」もダブルクリックして展開します。次に「WMIコントロール」を右クリックして「プロパティ」を選択すると、「WMIコントロールのプロパティ」ダイアログボックスが表示されます。

セキュリティ」タブを選択し、「Root」フォルダーを展開します。その後「Security」サブフォルダーを選択し、右下にある「セキュリティ」ボタンをクリックします。「ROOTのセキュリティ」ダイアログボックスが画面に表示されます。

Authenticated Users(認証されたユーザー)」に対して、以下の権限が有効になっている必要があります。

  • メソッドの実行(Execute Methods)
  • プロバイダーの書き込み(Provider Write)
  • アカウントの有効化(Enable Account)

「OK」をクリックして「ROOTのセキュリティ」ダイアログボックスを閉じます。コンピューターの管理画面を閉じてパソコンを再起動し、問題が解消されたか確認してください。

3. DCOM権限を確認する

以下の手順でDCOM権限を確認および変更します。

Windowsの検索ボックスに「Dcomcnfg」と入力し、検索結果からDcomcnfgアプリを選択して起動します。

コンポーネントサービス > コンピューター > マイコンピューター」へ移動します。「マイコンピューター」を右クリックして「プロパティ」を選択すると、「マイコンピューターのプロパティ」ダイアログボックスが表示されます。「COMセキュリティ」タブを選択します。

アクセス許可」セクションの「既定の編集(Edit Limits)」ボタンをクリックします。「アクセス許可」ダイアログボックスが開くので、「Everyone」ユーザーグループを選択し、以下の権限が許可されているか確認します。

  • ローカルからのアクセス(Local Access)
  • リモートからのアクセス(Remote Access)

上記の権限の「許可」チェックボックスが選択されていない場合は、両方にチェックを入れて「OK」をクリックします。

続いて、「マイコンピューターのプロパティ」ダイアログボックスの「起動とアクティブ化のアクセス許可」セクションにある「既定の編集」ボタンをクリックします。「Everyone」ユーザーグループを選択し、以下の権限が許可されているか確認します。

  • ローカルでの起動(Local Launch)
  • ローカルでのアクティブ化(Local Activation)

チェックボックスが選択されていない場合は、両方にチェックを入れて「OK」をクリックします。

「適用」をクリックし、さらに「OK」をクリックして「マイコンピューターのプロパティ」ダイアログボックスを閉じます。

次に、コンポーネントサービスウィンドウで「コンポーネントサービス > コンピューター > マイコンピューター > DCOMの構成」へ移動します。右側の一覧を下にスクロールして「Windows Management and Instrumentation」を探し、見つかったら右クリックして「プロパティ」を選択します。

セキュリティ」タブを選択し、「起動とアクティブ化のアクセス許可」セクションの「編集」ボタンをクリックします。ユーザーグループから「Administrators」を選択し、以下の権限が許可されているか確認します。

  • ローカルでの起動(Local Launch)
  • リモートでの起動(Remote Launch)
  • ローカルでのアクティブ化(Local Activation)
  • リモートでのアクティブ化(Remote Activation)

チェックボックスが選択されていない場合は、すべてにチェックを入れて「OK」をクリックします。

Windows WMIリポジトリを修復または完全に再構築するには?

WMIリポジトリが破損している場合、その時点で実行している操作に応じてさまざまなエラーが発生します。WMIには自己回復モードが備わっており、リポジトリの破損を検出すると自動的に自己回復モードが起動します。WMIはVSSバックアップメカニズムによって作成されたバックアップイメージを探し、AutoRestore方式を使用して有効なイメージの復元を試みます(可能な場合)。

自己回復モードで破損したWMIリポジトリを復元できない場合は、WMIリポジトリが破損していることを示す複数のエラーメッセージが表示されます。このような場合は、管理者権限のコマンドプロンプトでコマンドを実行することにより、Windows WMIリポジトリを手動で修復または再構築できます。

WMIが破損しているかどうかを確認するには?

WMIが破損していると、各種エラーや権限の問題が発生します。その場合、パソコン上で以下のようなエラーや症状が現れます。

  • rootdefaultまたはrootcimv2名前空間に接続できない(WBEM_E_NOT_FOUNDを示すエラーコード0x80041002で失敗する)
  • 「WMI Not Found」エラーが表示される、またはコンピューターの管理(ローカル)のプロパティを開く際にフリーズする
  • 0x80041010 WBEM_E_INVALID_CLASS エラーが発生する
  • スキーマやオブジェクトが欠落している
  • 奇妙な接続エラーや操作エラーが発生する(0x8007054e)
  • wbemtestユーティリティを使用するたびにシステムがフリーズする

上記のエラーはWMI破損の典型的な症状です。WMIの破損を確定するには、管理者権限のコマンドプロンプトで以下のコマンドを実行してください。

winmgmt /verifyrepository

コマンド実行後、「repository is not consistent(リポジトリに一貫性がありません)」というメッセージが返ってきた場合は、WMIが破損しています。逆に「repository is consistent(リポジトリに一貫性があります)」というメッセージが返ってきた場合は、リポジトリ自体に問題はなく、別の原因で問題が発生していると考えられます。

この記事がお役に立てば幸いです。

  1. 【解決法】DllRegisterServerがエラーコード0x80070005で失敗する問題の直し方

    この問題は、Windows Vista Home Premium(32ビット)などのシステムで regsvr32 コマンドを実行しようとした際に発生します。コマンドが正常に実行できず、画面には以下のようなエラーが表示され続けます。「<DLLファイル> は読み込まれましたが、DllRegisterServer の呼び出しはエラーコード 0x80070005 により失敗しました」このエラーは比較的よく見られるもので、原因は管理者権限の不足です。regsvr32 コマンドを正常に実行するには管理者権限が必要なため、コマンドを管理者として実行することで簡単に解決できます。以下の方法と手順に

  2. Windows 10のエラーコード0x80070005を解消する5つの対処法

    Windowsデバイスを更新しようとしたのに、エラーコード0x80070005が表示されて先へ進めない――そんな経験はありませんか?ご安心ください。この記事では、Windows 10でこのエラーを解消するための方法をわかりやすく解説します。 具体的な解決策をご紹介する前に、まずは「エラーコード0x80070005とは何か」「なぜ発生するのか」という基本情報から確認していきましょう。 エラーコード0x80070005とは? エラーコード0x80070005は、Windowsでは「アクセス拒否(Access Denied)」エラーとして知られています。主にWindows Updateを実行しよ