このページは米マイクロソフト社Webサイトの、Active Directoryのグループポリシー用の管理テンプレートファイルの文法を説明したページを、独自に日本語訳したものである。インターネットで検索する限り日本語訳が存在しなかったので訳出してみた。
Language Reference for Administrative Template Files
当然のことながら、この翻訳に基づいて作成した.ADMファイルで、あなたの会社のWindowsドメインがいかなる被害をこうむっても、筆者は何ら責任を負わない。では日本語訳のスタート。
管理テンプレートファイル言語リファレンス
このページはActive Directoryのグループポリシーを設定するための.admファイル言語の完全なリファレンスです。
各.admファイルは0個以上のポリシー設定を含み、各ポリシー設定は0以上のパートを含みます。.adm言語は下記の部分からなります。
注釈
文字列変数
クラス
カテゴリ
ポリシー
パート
項目リスト
アクションリスト
.Admファイル言語のバージョン
.admファイルの各パートを、特定のバージョンのグループポリシー編集ツールでしか評価されないように設定できます。下記はグループポリシー編集ツールのバージョン一覧です。
Windows XP SP2 = 5.0
Windows Server 2003、Windows XP = 4.0
Windows Server 2000 = 3.0
Windows NTR 3.x and 4.x = 2.0
Windows 95 = 1.0
注釈
.admファイルに注釈をつけるには2つの方法があります。セミコロン(;)かスラッシュ2個(//)です。注釈はどの行の末尾にもつけられます。
文字列変数
.admファイルに文字列変数を追加するには2個の感嘆符(!!)を使います。.admファイルの最後の[strings]セクションで、すべての文字列変数を定義します。文字列は二重引用符(")でくくります。二重引用符の内部に変数名やハードコーディングした文字列を含めることもできます。
【例】
POLICY !!LimitSize
EXPLAIN!!LimitSize_Explain ; この文字列はstringsセクションで定義されています
TIP1 "Limit Profile Size to" ; この文字列はハードコーディングされています
[strings]
LimitSize="Limit profile size"
LimitSize_Explain="Limits the size of user profiles"
【推奨】
すべての文字列を[strings]セクションに記述してください。.admファイルを他の言語に翻訳しやすくなるためです。他国語に変更するとき、.admファイルの[strings]セクションを変更するだけですみます。
クラス
グループポリシー・オブジェクトエディタで表示されるポリシー名を定義します。
.admファイルの最初の部分はCLASSというキーワードです。グループポリシー・オブジェクトエディタのコンピュータの構成や、ユーザの構成で、該当のポリシーをどのように表示するかを記述します。
【文法】
CLASS 名称
名称の部分はCLASSの名称を定義します。MACHINE か USER のどちらかです。
.admファイルでCLASSの名称として MACHINE か USER 以外の名称を含む場合はエラーとなり、グループポリシー・オブジェクトエディタに読み込むとき無視されます。
【例】
下記はCLASSの記述例です。
CLASS MACHINE
CLASS USER
【注】
1個の.admファイルに複数のCLASS USER または CLASS MACHINEを定義できます。.admファイルが処理されるとき、CLASS USERはすべて一つにまとめられ、CLASS MACHINEもすべて一つにまとめられます。しかし.admファイルを管理しやすくするために、1個の.admファイルにはCLASS USERまたはCLASS MACHINEを1個だけ定義することをおすすめします。
カテゴリ
CLASSを定義したら、次はCATEGORYをつかって、グループポリシー・オブジェクトエディタで表示されるノード名を定義します。
【注】
CATEGORYを入れ子にすることで、親ノードに対する子ノードを作成できます。
【文法】
CATEGORY !!名称
KEYNAME キー名
[ポリシー定義]
END CATEGORY
名称
CATEGORYの名称はグループポリシー・オブジェクトエディタのリストボックスに表示される名称のことです。変数名を二重引用符でくくることもできます。空白をふくむ名称には二重引用符が必要です。
キー名
キー名をつかって、CATEGORYのためのレジストリキーのパスを示すこともできます。
レジストリーパスにHKEY_LOCAL_MACHINE や HKEY_CURRENT_USERを使わないで下さい。CLASSですでに特定されているからです。キー名を指定すると、以下のすべての子カテゴリ、ポリシーなどの部分がこのキー名を使います。違うキー名にしたい場合は、個々に指定してください。空白を含むキー名には二重引用符が必要です。
上位カテゴリのどこにもキー名が指定されていない場合、各ポリシーで個々にキー名を指定する必要があります。さもないと、次にキー名を指定しているCATEGORYのキー名が採用されてしまいます。
ポリシー定義
CATEGORY内には0個以上のPOLICYを定義できます。ただし、下記の例のように、ポリシー定義は1個のカテゴリ内に1個しか記述できません。
【例】
CLASS USER
; 下記のカテゴリはユーザの構成の下に表示されます
CATEGORY !!Desktop
KEYNAME "Software\Policies\System"
; <ここにポリシーを定義します>
CATEGORY !!InternalApps
KEYNAME "Software\Policies\InternalApps"
; <ここにポリシーを定義します>
END CATEGORY
END CATEGORY
[strings]
Desktop="Desktop Settings"
InternalApps="Line of Business Apps settings"
サポートタグ
グループポリシー・オブジェクトエディタは、要件フィールドを埋めるためにサポートタグと呼ばれるものを使います。このタグはグループポリシー管理ツールに、そのポリシーがサポートしているプラットフォームやアプリケーションを伝えます。例えば、system.admファイルに含まれる多数のポリシー設定は、サービスパックを特定するサポートタグを使っています。サポートタグに使われる文字列としてよく使われるのは、さまざまなOSやサービスパックを示す文字列です。
OSのコンポーネントがこの要件フィールドでOSやサービスパックの名称を使うのに対し、アプリケーションは、サービスパックと無関係に更新される可能性があるため、アプリケーションの特定のバージョンを指定できます。サポートタグはグループポリシー管理ツールに提示されるデータの中でも非常に重要な要素なので、正確な情報が含まれている必要があります。
.admファイルは各国語別に作成される可能性があるため、各国語対応にしやすいように、サポートタグには!!文字列変数を使うことを強くおすすめします。さらに、サポートタグはWindows XP以降のOSでしかサポートされないため、次のようにバージョン構文の中に記述してください。(こうするとWindows 2000のグループポリシー・オブジェクトエディタがサポートタグを解釈しないようにできます)
#if version >= 4
SUPPORTED!!SUPPORTED_MyApplication
#endif
CATEGORYで有効なキーワード
KEYNAME
CATEGORY
POLICY
END
SUPPORTED
【注】
CATEGORYを初期値のKEYNAMEで定義していて、同じカテゴリが.admファイル内に再度出てくる場合は、初期値のKEYNAMEが有効です。つまり、同じカテゴリですでに定義されているKEYNAMEを二度記述するとエラーになるということです。エラーを解消するには重複するKEYNAMEを削除してください。
ポリシー
ユーザが変更できるポリシー設定を記述するには、POLICYキーワードを使います。ポリシーとそれに付随する入力コントロールは、ポリシー設定をするとき管理画面上に表示されます。1個のKEYNAMEの中に複数のPOLICYを記述できます。
【文法】
POLICY 名称
[KEYNAME キー名]
[EXPLAIN ヘルプ文字列]
[VALUENAME 値名]
[CLIENTEXT グローバル識別子]
[パート定義の記述]
END POLICY
名称
ポリシーの名称はグループポリシー・オブジェクトエディタの名前空間に表示されます。
キー名
任意項目。カテゴリに使うレジストリキーのパスです。レジストリパスにはHKEY_LOCAL_MACHINE や HKEY_CURRENT_USERを含めないで下さい。先行するCLASS部分ですでに定義されているからです。
キー名を指定すると、配下の各PART定義内でキーが指定されない限り、すべてのPART定義でこのキーが使われます。
キーが指定されず、上位のどのカテゴリでもキーが指定されない場合は、該当のカテゴリ内の各ポリシーでキーを個別に指定する必要があります。さもないとキーを指定している次のカテゴリがキー名として使われます。
ヘルプ文字列
ポリシー設定ダイアログの「説明」タブに表示される文字列です。
値名
値名は値を変更したいレジストリ値の名称です。このオプションを設定すると、キー値をREG_DWORD の 1 に設定します。このオプションをクリアすると、レジストリ値を削除します。初期値以外の値を指定するには、対応するVALUENAMEの直下にVALUEON、VALUEOFFを記述します。これらは下記のように記述して下さい。
VALUEON ONの値
VALUEOFF OFFの値
この記述を使うと、管理者がオプションを選択した場合、値がONの値に設定されるようになります。管理者がこのオプションをクリアすると、値がOFFの値に設定されます。
グローバル識別子
スナップイン拡張のグローバル識別子を指定するオプションです。
パート定義文
ポリシーはさまざまなオプションを指定するために0個以上のPART定義文を含めることができます。PART定義文にはグループポリシー・オブジェクトエディタの下半分に表示されるドロップダウンリスト、テキストボックス、固定テキストなどがあります。
【ポリシー例】
CLASS MACHINE
CATEGORY!!DiskQuota
KEYNAME "Software\Policies\MS\DiskQuota"
POLICY!!DQ_Enable
EXPLAIN !!DQ_Enable_Help
VALUENAME "Enable"
VALUEON NUMERIC 1
VALUEOFF NUMERIC 0
CLIENTEXT {3610eda5-77ef-11d2-8dc}
PART!!DQ_EnableTip1 TEXT
END PART
END POLICY
END CATEGORY
[strings]
DiskQuota="Disk Quotas"
DQ_Enable="Enable disk quotas"
DQ_Enable_Help="Enables and disables disk quota management"
DQ_EnableTip1="Enable disk quotas for all NTFS volumes"
POLICYで有効なキーワード
KEYNAME
PART
VALUENAME
VALUEON
VALUEOFF
ACTIONLISTON
ACTIONLISTOFF
END
HELP
CLIENTEXT
POLICY
パート
ドロップダウンリスト、テキストボックス、固定テキストなど、グループポリシー・オブジェクトエディタの下半分に表示されるさまざまなオプションを指定します。
レジストリキーを1か0を設定するだけの単純なポリシーなら、PARTの記述は不要です。PARTはより親切なシステム管理ができるようにするためのもので、単純な入力コントロールでは収集できない情報を集めます。
【文法】
PART 名称 パートの型 パートの型に依存するデータ
[KEYNAME キー名]
[VALUENAME 値名]
END PART
名称
グループポリシー・オブジェクトエディタに表示するPART名称を指定します。二重引用符でくくることもできます。空白を含む名称は二重引用符が必要です。
パートのタイプ
ポリシーのPARTの型を指定します。下記に有効なPOLICY型の一覧を示します。
CHECKBOX
チェックボックスを表示します。キー値をREG_DWORD型のレジストリに設定します。チェックボックスがチェックされると、キー値は0以外の値になり、チェックされないと0になります。
COMBOBOX
コンボボックスを表示します。
DROPDOWNLIST
ドロップダウンリストのコンボボックスを表示します。ユーザは選択肢を1つだけ選べます。
LISTBOX
「追加」「削除」ボタンつきのリストボックスを表示します。1つのキーに複数値をあつかえるのはこのPART型だけです。
EDITTEXT
英数字のテキストを入力するテキストボックスを表示します。テキストはREG_SZまたはREG_EXPAND_SZ型のレジストリ値に設定されます。
TEXT
1行の固定テキストを表示します。このPART型に対応するキー値はありません。
NUMERIC
上下矢印ボタンつきの数値入力用テキストボックスを表示します。REG_DWORD型のレジストリに設定されます。
パートの型に依存するデータ
これはPARTに関する情報です。
キー名称
レジストリキーのパスのことで、任意項目です。HKEY_LOCAL_MACHINE や HKEY_CURRENT_USERは先行するCLASSのところですでに定義されているので、ここには含めないで下さい。
キー名称が指定されないと、同じ階層内の前のキー名称が採用されます。
値名
この値名は変更するレジストリ値を示します。このオプションを選択すると値はREG_DWORDの 1 となり、クリアするとレジストリ値が削除されます。初期値以外の値を指定する場合は、対応するVALUENAMEの直下にVALUEON、VALUEOFFで記述します。下記のように指定します。
VALUEON ONの値
VALUEOFF OFFの値
PARTで有効なキーワード
CHECKBOX
TEXT
EDITTEXT
NUMERIC
COMBOBOX
DROPDOWNLIST
LISTBOX
END
CLIENTEXT
PART
画面に入力コントロールを追加するためにPART型を使用する
PARTコンポーネントとともに有効なキーワードを使うと、ポリシーのプロパティ画面にさまざまな入力インターフェースを追加できます。
その文法はお互いに関連があるので、上述の管理画面の要素を作るためのこれらPART型の文法については、作業ベースで以下に説明します。
さまざまなPART型を使うとき、ポリシー設定を拡張するのにテキストや入力コントロールを追加できます。これらの型は上述のPARTコンポーネントとともに使う必要があります。
CHECKBOX PART型
このPART型はポリシー設定のプロパティ画面にチェックボックスを表示します。値はレジストリのREG_DWORD型になります。初期状態では下記のように動作します。
初期状態では、チェックボックスはチェックされていません。
チェックされたとき、チェックボックスはレジストリ値に 1 を書き込み、チェックがはずれると 0 を書き込みます。
【文法】
PART テキスト CHECKBOX
VALUENAME 値名
END PART
テキスト
作成したチェックボックスの右側に表示されるテキストです。ハードコーディングするには二重引用符でくくります。値名の前に!!を書くことで文字列変数にもできます。
値名
選択された値が書き込まれるレジストリ値の名称を示します。オプションを選択するとREG_DWORD型の 1 が設定されます。オプションをクリアするとレジストリ値が削除されます。初期値以外の値を指定するには、対応するVALUENAMEの直下にVALUEON、VALUEOFFを記述します。下記のように記述します。
VALUEON ONの値
VALUEOFF OFFの値
これらを記述すると、管理者がオプションを選択すると、キー値がON用の値に設定されるようになります。管理者がオプションをクリアすると、キー値がOFF用の値に設定されます。
初期の動作を上書きするには次のようにしてください。
チェックボックスが初期状態でチェックされるようにするには、DEFCHECKEDを使います。上述の例なら、次のようになります。
PART !!SampleChkBox_NotChked CHECKBOX
DEFCHECKED
VALUENAME "test1"
END PART
また、VALUEON、VALUEOFFも使えます。下記の例では次のような動作をします。
チェックボックスが選択されたらレジストリに"Enabled"という文字列を書き込む。
チェックボックスが選択されなければ数値 12 が書き込まれます。
PART !!SampleChkBox_NotChked CHECKBOX
VALUENAME "test1"
VALUEON "Enabled"
VALUEOFF NUMERIC 12
END PART
1個以上のレジストリを変更するにはACTIONLISTを使います。
CHECKBOXに有効なキーワードは下記のとおりです。
KEYNAME
VALUENAME
VALUEON
VALUEOFF
ACTIONLISTON
ACTIONLISTOFF
DEFCHECKED
CLIENTEXT
END
TEXT PART型
TEXTというPART型はポリシー設定のプロパティ画面に固定テキストを表示します。
【文法
PART テキスト TEXT
END PART
テキスト
個々に入力したテキストがそのまま表示されます。ハードコーディングする場合は二重引用符でくくります。また、値の名称の前に!!を置くことで文字列変数にもできます。
TEXTの使用例は下記のとおりです。「アクティブデスクトップを無効にする」ポリシーはアクティブデスクトップを無効にし、ユーザ自身がアクティブデスクトップを有効にしたり、設定変更したりすることを防ぎます。
【テキストの例】
POLICY !!NoActiveDesktop
KEYNAME "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
EXPLAIN!!NoActiveDesktop_Help
VALUENAME "NoActiveDesktop"
PART !!NoActiveDesktop_Tip TEXT
END PART
END POLICY
TEXTに有効なキーワードはENDだけです。
EDITTEXT PART型
EDITTEXTは編集可能入力欄にユーザが英数字を入力できるようにするオプションです。テキストはREG_SZ型のレジストリ値として設定されます。
【文法】
PART !!テキスト EDITTEXT
VALUENAME 値名
END PART
テキスト
表示したいテキストをここに入れておきます。ハードコーディングする場合は二重引用符でくくります。キー値の名所の直前に!!をつけることで文字列変数にもできます。このテキストは編集可能入力欄の左に表示されます。
値名
編集可能入力欄にユーザが入力した値が下記こまれる値名です。
EDITTEXTのオプション
DEFAULT値
入力欄に入れる初期値です。このオプションを使わないと、初期値は空欄です。
MAXLEN値
入力できる文字列の最大長を指定します。入力できる文字がこの長さに制限されます。
REQUIRED
このPARTに値が入力されない限り、グループポリシー・オブジェクトエディタがこのPARTを含むポリシーを有効化できないようにします。
OEMCONVERT
ES_OEMCONVERTスタイルを入力欄に設定すると、入力したテキストがASCIIからOEMにマップされたり、逆にOEMからASCIIにマップされたりします。ES_OEMCONVERTは入力されたテキストを変換します。テキストはWindowsの文字セット(ASCII)からOEMの文字セットに変換されたり、その逆の変換をされたりします。これは、入力欄に入力された文字列をOEM文字セットに変換するCharToOem 関数をアプリケーションから呼び出したとき、適切な文字変換ができるようにするためのものです。入力欄にファイル名を入力するときにとても便利です。
EXPANDABLETEXT
REG_EXPAND_SZ型のレジストリ値として設定するテキストを指定します。初期状態ではテキストはREG_SZ型のレジストリ値になります。
EDITTEXTに有効なキーワードは以下の通りです。
KEYNAME
VALUENAME
DEFAULT
REQUIRED
MAXLENGTH
OEMCONVERT
END
EXPANDABLETEXT
CLIENTEXT
【EDITTEXTの例】
EDITTEXTやTEXTをつかったPARTの記述例は下記のとおりです。
CLASS USER
CATEGORY !!DesktopLockDown
KEYNAME "Software\Policies\System"
POLICY !!Wallpaper
EXPLAIN !!Wallpaper_Explain
PART !!Wallpaper_Tip1 TEXT
END PART
PART !!Wallpaper_Filename EDITTEXT
VALUENAME Wallpaper
MAXLEN 60
END PART
END POLICY
END CATEGORY
[strings]
DesktopLockDown="Desktop Settings"
Wallpaper="Desktop Wallpaper"
Wallpaper_Explain="Used to set the desktop wallpaper"
Wallpaper_FileName="Filename"
Wallpaper_Tip1="Specify UNC Path for selected wallpaper"
この例では入力欄に入力されたテキストはHKEY_CURRENT_USER\Software\Policies\System\Wallpaperに書き込まれます。このテキストは最大60文字まで可能です。
ポリシー設定が「未構成」「無効」のとき、このキーは書き込まれません。
【EXPANDABLETEXTの例】
REG_EXPAND_SZ型データでレジストリ値に書き込む例は下記のとおりです。
PART!!MyVariable EDITTEXT EXPANDABLETEXT
VALUENAME ValueToBeChanged
END PART
【REQUIREDの例】
次の例は必須入力値の入力がない場合、エラーを表示します。
PART!!MyVariable EDITTEXT REQUIRED
VALUENAME ValueToBeChanged
END PART
【MAXLENの例】
次の例はテキストの最大長を指定しています。
PART!!MyVariable EDITTEXT
VALUENAME ValueToBeChanged
MAXLEN 4
END PART
【DEFAULTの例】
次の例は初期値を指定しています。テキスト値にも数値にも使えます。
PART!!MyVariable EDITTEXT
DEFAULT !!MySampleText
VALUENAME ValueToBeChanged
END PART
NUMERIC PART型
数値を入力できる上下矢印ボタンつきの入力欄を表示します。
【文法】
PART テキスト NUMERIC
VALUENAME 値名
MIN 値
MAX 値
DEFAULT 値
SPIN 値
END PART
テキスト
上下矢印ボタンつき入力欄の左に表示するテキストです。ハードコーディングするときは二重引用符でくくり、値名の直前に!!をおけば文字列変数にもできます。
値名
選択された値が書き込まれるレジストリ値の名称を示します。
NUMERICの