ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、エラーが表示されることがあります。エラー メッセージにて [OK] をクリックして画面を閉じると、ポリシーを編集することはできます。しかし、 [グループ ポリシー管理エディター] を閉じて、再度、開くと同じエラーが表示されます。
この記事では、エラーの原因と対処策について紹介します。
事象
ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、以下のようなエラーが表示されることがあります。
ファイル C:\Windows\PolicyDefinitions\AppCompat.admx、行 53、列 306
原因
このエラー メッセージは [管理用テンプレート] のポリシーを定義している ADMX ファイルにて、ポリシーのdisplayName の属性要素が見つからなかったことを意味しております。
[管理用テンプレート] とは、GPO で設定できるポリシー項目のカテゴリの一つであり、レジストリ設定を配布するためのポリシーとなります。[管理用テンプレート] のポリシーの定義は、ローカルの PolicyDefinitions フォルダに XML 形式のファイルで行われています。
定義ファイルには、ポリシーで設定できるレジストリ値を定義している ADMX ファイル、ポリシーの言語表記に定義している ADML ファイルの 2 種類があります。
ADMX ファイルと ADML ファイルで定義されている内容のサンプルは以下の通りです。
■ ADMX ファイルの定義サンプル
<parentCategory ref=”AppCompat” />
<supportedOn ref=”windows:SUPPORTED_WindowsVista” />
<enabledValue>
<decimal value=”1” />
</enabledValue>
<disabledValue>
<decimal value=”0” />
</disabledValue>
</policy>
■ ADML ファイルの定義サンプル
<string id=”AppCompatTurnOffProgramCompatibilityAssistant“>プログラム互換性アシスタントを終了する</string>
ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、[管理用テンプレート] のポリシーを読み込むために PolicyDefinitions の定義ファイルを参照します。その際に、ADMX で定義されている各ポリシーの displayName 属性や explainText 属性を参照して、ポリシー名や説明文の表示を構成します。
このエラー メッセージは、PolicyDefinitions フォルダにある ADMX ファイルで定義されているポリシーの中で、ADML ファイルに該当の displayName 属性の ID の定義が見つからなかったことを意味しています。エラーの原因となった admx ファイルの各ポリシーは、[グループ ポリシー管理エディター] 上で表示されなくなるため、編集することができなくなります。
■正常時の表示
■エラー発生時の表示
※ AppCompat.adml で定義されている [アプリケーションの互換性] のカテゴリや各ポリシーが存在しません。
管理用テンプレートの基本的な仕組みについては、以下の記事で紹介しておりますので参考にしてください。
Active Directory ドメイン サービスとは、システム管理者が組織内のユーザーやリソースを管理するためのサービスです。 Active Directory の管理機能の一つとして、ユーザーやコンピューター、アプリケーションにおけ[…]
対処策
PolicyDefinitions フォルダで定義されている内容に問題があることが想定されます。一般的には、管理用テンプレートの更新を行った際に、更新作業の手順に問題があって、ADMX ファイルと ADML ファイルで不整合が生じたことが要因となっているケースが多いです。
そのため、マイクロソフトの公式サイトで提供されている PolicyDefinitions のデータに置き換えることで、ADMX ファイルと ADML ファイルの不整合の問題は解消できます。
ローカルの PolicyDefinitions フォルダを置き換える方法は以下の通りです。
1) 上記の URL より、管理用テンプレートをダウンロードします。
タイトル:Windows でグループ ポリシー管理用テンプレート用のセントラル ストアを作成および管理する方法
https://learn.microsoft.com/ja-JP/troubleshoot/windows-client/group-policy/create-and-manage-central-store
※利用したい PolicyDefinitions のバージョンを指定してください。
2) 問題が発生するドメイン コントローラーに、管理者権限をもつユーザーでログオンします。
3) ダウンロードした msi ファイルを、任意のフォルダにコピーします。
4) msi ファイルを実行して、展開します。既定の設定で処理を進めると、以下のパスに展開されます。
“C:\Program Files (x86)\Microsoft Group Policy\Windows xx and Windows Server xxxx (xxxx)\PolicyDefinitions”
5) 以下のフォルダにある既存の PolicyDefinitions フォルダを、任意の場所にコピーしてバックアップしておきます。
6) 管理者権限でコマンド プロンプトを開きます。
7) 以下のコマンドを実行して、ADMX ファイルと英語用と日本語用の ADML ファイルをコピーします。
robocopy <コピー元フォルダ> <コピー先フォルダ> <コピー対象ファイル名> /B
実行例:
robocopy “C:\Program Files (x86)\Microsoft Group Policy\Windows xx and Windows Server xxxx (xxxx)\PolicyDefinitions” %systemroot%\PolicyDefinitions\ *.admx /B
robocopy “C:\Program Files (x86)\Microsoft Group Policy\Windows xx and Windows Server xxxx (xxxx)\PolicyDefinitions\ja-jp” %systemroot%\PolicyDefinitions\ja-JP\ *.adml /B
robocopy “C:\Program Files (x86)\Microsoft Group Policy\Windows xx and Windows Server xxxx (xxxx)\PolicyDefinitions\en-US” %systemroot%\PolicyDefinitions\en-US\ *.adml /B