WMI リポジトリの復旧方法

Last Update: feedback 共有

本記事は、マイクロソフト社員によって公開されております。

こんにちは、Windows サポートチームの中森です。

今回は、 Windows Management Instrumentation (WMI) のリポジトリが
破損した際に、安全に復旧するための手順をご紹介いたします。

はじめに

WMI とは Windows OS の設定や状態を確認したり管理するために用意された機能 (インターフェース) です。
この機能を提供するための WMI クラス情報と定義情報を格納しているデータベースを WMI リポジトリと呼びます。

この WMI リポジトリには、 3rd パーティ製品をインストールした際に、導入される WMI クラス情報も含まれており、
Windows OS の機能のみでなく、ご利用環境のソフトウェア全般から利用されております。

WMI リポジトリの破損について

WMI リポジトリは、独自のデータベース形式で管理されており、通常は、簡単に破損するものではありません。
しかしながら、破損しないことを保証したものでもありませんので、後述の復旧方法が機能として用意されております。

なお、多くの場合、 WMI リポジトリが破損したタイミングではエラーや警告等は記録されず、
WMI リポジトリ破損後に WMI を利用した機能がエラーとなり、 WMI リポジトリの破損が検出されます。

そのため、 WMI リポジトリが破損した場合でも、破損原因を特定することは基本的には出来かねますため、
以下の復旧方法により、システムの回復をいただけますと幸いでございます。

WMI リポジトリの復旧方法

WMI リポジトリを復旧する際には、管理者権限で起動したコマンド プロンプトより、WMI サービスの停止、
ならびに、 WMI リポジトリの修復と再構築の後、システムを再起動することで復旧が完了いたします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
1. 対象のマシンへ管理者権限を持つアカウントにてログオンします。  

2. 管理者権限で起動したコマンド プロンプトを起動します。

3. 以下のコマンドにより、Windows Management Instrumentation (WMI サービス) の
スタートアップの種類を "無効" にします。

> sc config winmgmt start= disabled

4. 次に、以下のコマンドにより、現在、起動している WMI サービスを停止します。

> net stop winmgmt /y

※ このとき、 WMI サービスが停止していない場合、対象のマシンを再起動してから、以降の手順を実施ください。

5. 以下のコマンドを実行し、 WMI リポジトリの破損状況を確認ください。

> winmgmt /verifyrepository

※ `WMI データベースに矛盾はありません` と表示された場合でも、
問題事象が発生し続けている場合には、以降の手順をお試しください。

6. 続けて、以下のコマンドにより、 WMI リポジトリをリセットせず復旧できるかどうか確認ください。

> winmgmt /salvagerepository

※ `WMI データベースに矛盾はありません` 以外のメッセージが表示された場合、
WMI リポジトリをリセットせず、復旧出来た可能性がございますので、
メッセージ内容を確認のうえ、次の手順へ進んでください。

7. 手順 5. 6. にて「WMI データベースに矛盾はありません」と表示された場合、
以下のコマンドを実行し、 WMI のリポジトリを再構築 (リセット) します。

> winmgmt /resetrepository

※ コマンドの完了時間は、ご利用環境の状態に応じて異なります。
完了すると「WMI データベースがリセットされました」と表示されます。

※ 上記コマンドを実行しなかった場合でも、以降の手順は実施ください。

8. WMI サービスのスタートアップの種類を "自動" に戻します。

> sc config winmgmt start= auto

9. 対象のマシンを再起動します。(コマンドは、再起動するための一例となります)

> shutdown /r /f

WMI リポジトリ復旧時の注意事項

WMI リポジトリの復旧時、停止した WMI サービスは、コマンド net start winmgmt で起動することができますが、
依存するサービスすべてをシステム起動時と同様に起動させることはできませんので、 WMI リポジトリの復旧後は、
システムを再起動することを強くお勧めいたします。

また、 winmgmt /resetrepository を実行しますと、WMI リポジトリを OS インストール直後の状態にしたのち、
登録されている定義ファイルをもとに WMI リポジトリを再構築いたします。

このとき、 3rd パーティ製のアプリケーションが WMI リポジトリを拡張しているものの、復旧用のファイルが
用意されていない場合、 WMI リポジトリの復旧後、ご利用のアプリケーションに影響が生じる場合もございます。

そのため、 WMI リポジトリの復旧後は、何らかの問題が生じていないかどうか、ご利用環境を、ご確認ください。
影響が生じたアプリケーションが確認された場合には、対象アプリケーションの提供元へ復旧方法を確認いただくか、
対象アプリケーションを再インストールなど、お試しいただけますと幸いでございます。

なお、今回ご紹介した復旧手順は、最低限実施いただきたいものをおまとめしたものとなりますので、
WMI リポジトリのリセット後も WMI に関する不具合やエラーが続く場合、他トラブルシューティングが
必要となる場合もございます。

以上の情報が WMI リポジトリを復旧したい、ご利用者の皆様の一助となりますと幸いです。

関連記事

winmgmt コマンドについて
https://docs.microsoft.com/en-us/windows/win32/wmisdk/winmgmt

WMI: Repository Corruption, or Not?
https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-repository-corruption-or-not/ba-p/375484

WMI: Rebuilding the WMI Repository
https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846

本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

更新履歴

2022/06/01 初版公開
2022/07/04 verifyrepository, salvagerepository について補足追記