【解決】グループ ポリシー管理エディターを開くとエラーが表示される

  • 2022年12月28日
  • 2022年12月28日
  • AD DS

ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、エラーが表示されることがあります。エラー メッセージにて [OK] をクリックして画面を閉じると、ポリシーを編集することはできます。しかし、 [グループ ポリシー管理エディター] を閉じて、再度、開くと同じエラーが表示されます。

この記事では、エラーの原因と対処策について紹介します。

 

事象

ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、以下のようなエラーが表示されることがあります。

リソース’$(String.AppCompatTurnOffProgramCompatibilityAssistant)’ (属性 displayName で参照) が見つかりませんでした。

ファイル C:\Windows\PolicyDefinitions\AppCompat.admx、行 53、列 306

赤マーカーの箇所は、環境によって表記が異なります。
環境によっては、[グループ ポリシー管理エディター] を開いたときに、同じようなエラー メッセージが複数回表示されることがあります。
このエラー メッセージが表示されたら、[OK] をクリックしてエラーを閉じると、そのままポリシーの編集をすることは可能です。ただし、[グループ ポリシー管理エディター] の画面を閉じた後に、もう一度開くと再度同じエラーが表示されます。
 

原因

このエラー メッセージは [管理用テンプレート] のポリシーを定義している ADMX ファイルにて、ポリシーのdisplayName の属性要素が見つからなかったことを意味しております。

[管理用テンプレート] とは、GPO で設定できるポリシー項目のカテゴリの一つであり、レジストリ設定を配布するためのポリシーとなります。[管理用テンプレート] のポリシーの定義は、ローカルの PolicyDefinitions フォルダに XML 形式のファイルで行われています。

定義ファイルには、ポリシーで設定できるレジストリ値を定義している ADMX ファイル、ポリシーの言語表記に定義している ADML ファイルの 2 種類があります。

ADMX ファイルと ADML ファイルで定義されている内容のサンプルは以下の通りです。

■ ADMX ファイルの定義サンプル

<policy name=”AppCompatTurnOffProgramCompatibilityAssistant_1″ class=”User” displayName=”$(string.AppCompatTurnOffProgramCompatibilityAssistant)” explainText=”$(string.AppCompat_TurnOffProgramCompatibilityAssistant_Help_User)” key=”Software\Policies\Microsoft\Windows\AppCompat” valueName=”DisablePCA“>
<parentCategory ref=”AppCompat” />
<supportedOn ref=”windows:SUPPORTED_WindowsVista” />
<enabledValue>
<decimal value=”1” />
</enabledValue>
<disabledValue>
<decimal value=”0” />
</disabledValue>
</policy>

 

■ ADML ファイルの定義サンプル

<string id=”AppCompat_TurnOffProgramCompatibilityAssistant_Help_User“>この設定は旧バージョンとの互換性のためだけに存在するため、このバージョンの Windows では有効ではありません。プログラム互換性アシスタントを構成するには、[コンピューターの構成]、[管理用テンプレート]、[Windows コンポーネント]、[アプリケーションの互換性] の順に展開して、[プログラム互換性アシスタントを終了する] 設定を使用します。</string>
<string id=”AppCompatTurnOffProgramCompatibilityAssistant“>プログラム互換性アシスタントを終了する</string>
 
上記の例は、[プログラム互換性アシスタントを終了する] というポリシーの定義ファイルです。エラー メッセージに表示されている C:\Windows\PolicyDefinitions フォルダに含まれている AppCompat.admx と、ja-JP フォルダにある AppCompat.adml で定義されている内容の抜粋です。
ADMX ファイルには、そのポリシーが設定できるレジストリ値の定義とあわせて、displayName 属性や explainText 属性は、ポリシー名やポリシーの説明に関する日本語表記を参照する string タグの ID が指定されています。ID 属性で参照されるデータは ADML ファイルで定義されており、各ポリシーで表記されるポリシー名やポリシーの説明文が定義されています。(言語ごとに ADML ファイルは用意されています)

 

ドメイン コントローラーで [グループ ポリシー管理エディター] を開くと、[管理用テンプレート] のポリシーを読み込むために 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

 

上記の対処策の手順は、ローカルの PolicyDefinitions を置き換える手順となります。もし、エラーが発生している環境で、セントラル ストアを利用している場合は、SYSVOL 上の PolicyDefinitions フォルダをそのまま置き換えてください。

 

 

[グループ ポリシー管理エディター] を開いて、ADMX ファイル関連のエラーメッセージが表示された場合、今回と同じエラーの説明文ではなくても、基本的には PolicyDefinitions をそのまま置き換えれば問題が解消する可能性が高いです。