Active Directory管理テンプレート.ADMファイルの文法

このページは米マイクロソフト社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 "SoftwarePoliciesSystem"
    ; <ここにポリシーを定義します>
    CATEGORY !!InternalApps
    KEYNAME "SoftwarePoliciesInternalApps"
    ; <ここにポリシーを定義します>
    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 "SoftwarePoliciesMSDiskQuota"
    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 "SoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer"
    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 "SoftwarePoliciesSystem"
    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_USERSoftwarePoliciesSystemWallpaperに書き込まれます。このテキストは最大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の初期状態の動作
    NUMERIC PARTの初期状態での動作は下記のとおりです。

  • 値をREG_DWORD型のレジストリ値として設定する。
  • TXTCONVERTキーワードを使うと、REG_SZ型のレジストリ値として書き込まれる。
    下記にNUMERIC型のオプションを示します。
    DEFAULT値
    入力欄の初期数値を示します。このオプションがつかわれなければ、入力欄は空欄になります。
    MAX値
    最大値を指定します。初期値は9999です。
    MIN値
    最小値を指定します。初期値は0です。
    REQUIRED
    このPARTに値が入力されない限り、グループポリシー・オブジェクトエディタがこのPARTを含むポリシーを有効化できないようにします。
    SPIN値
    上下矢印つき入力欄の増分値を指定します。初期値は1です。0を設定すると、上下矢印がなくなります。
    TXTCONVERT
    値をバイナリ値としてではなく、REG_SZ文字列として書き込みます。
    NUMERICに有効なキーワードは以下の通りです。

  • KEYNAME
  • VALUENAME
  • MIN
  • MAX
  • SPIN
  • DEFAULT
  • REQUIRED
  • TXTCONVERT
  • END
  • CLIENTEXT
    【NUMERICの例】
    次の例はDEFAULTオプションを使ったNUMERIC PARTの例です。

    PART!!MyVariable    NUMERIC
    DEFAULT 5
    VALUENAME ValueToBeChanged
    END PART
    

    次の例は最小値、最大値を使った例です。

    PART!!MyVariable    NUMERIC
    MIN 100
    MAX 999
    DEFAULT 55
    VALUENAME ValueToBeChanged
    END PART
    

    次の例はSPINをつかった例です。上下矢印つき入力欄の増分として100を指定しています。

    PART !!ProfileSize    NUMERIC REQUIRED SPIN 100
    VALUENAME "MaxProfileSize"
    DEFAULT 30000
    MAX     30000
    MIN     300
    END PART
    

    次の例はTXTCONVERTオプションをつかったNUMERIC PARTの例です。バイナリ値ではなくREG_SZ文字列として値を書き込みます。

    PART !!ScreenSaverTimeOutFreqSpin    NUMERIC DEFAULT 900
    MIN 0 MAX 599940 SPIN 60
    TXTCONVERT
    VALUENAME "ScreenSaveTimeOut"
    END PART
    

    COMBOBOX PART型
    このPART型はコンボボックスを表示します。EDITTEXTと同じオプションが使え、加えてSUGGESTIONSオプションが使えます。SUGGESTIONSオプションはドロップダウンリストの最初に推奨値の一覧が表示されるようにします。SUGGESTIONSは空白で区切られるため、値に空白が含まれる場合は二重引用符でくくる必要があります。推奨値の名称が空白を含む場合、二重引用符でくくる必要があります。推奨値のリストはEND SUGGESTIONSで終了します。
    【例】
    SUGGESTIONSオプションの用例です。

    SUGGESTIONS
    Alaska Alabama Mississippi "New York"
    END SUGGESTIONS
    

    COMBOBOXに有効なキーワードは下記のとおりです。

  • KEYNAME
  • VALUENAME
  • DEFAULT
  • SUGGESTIONS
  • REQUIRED
  • MAXLENGTH
  • OEMCONVERT
  • END
  • NOSORT
  • EXPANDABLETEXT
  • CLIENTEXT
  • END
    DROPDOWNLIST PART型
    ドロップダウンリスト型のコンボボックスを表示します。ユーザは選択肢を1個だけ選択できます。
    【注】
    グループポリシー管理コンソール(GPMC)では、DROPDOWNLISTを指定する前にキー名と値名を定義する必要があります。
    【文法】

    PART !!テキスト DROPDOWNLIST
    ITEMLIST
    NAME 名称 VALUE 値
    ...
    NAME 名称 VALUE 値
    END ITEMLIST
    END PART
    

    テキスト
    ドロップダウンリストの左に表示されるテキストです。ハードコーディングする場合は二重引用符でくくります。値の名称の前に!!をおけば、文字列変数にもできます。
    名称
    ドロップダウンリストに表示される個々の項目の名称です。

    この項目が選択されたときにレジストリに書き込まれる値です。値の前にNUMERICと記述しない限り、文字列と見なされます。以下、文字列と数値の例を示します。
    VALUE “Some value”
    VALUE NUMERIC 1
    DROPDOWNLISTに有効なキーワードは以下の通りです。

  • KEYNAME
  • VALUENAME
  • REQUIRED
  • ITEMLIST
  • END
  • NOSORT
  • CLIENTEXT
    LISTBOX PART型
    LISTBOX PARTは、ドロップダウンリストボックス、テキストボックス、固定テキストなど、グループポリシー・オブジェクトエディタの下半分に表示されるさまざまなオプションを指定します。LISTBOXには次のようなオプションが使えます。
    ADDITIVE
    初期状態では、対象となるレジストリに設定されている一連の値が、リストボックスの内容で上書きされます。つまり、レジストリの既存の値が削除されてから、ポリシーファイルに設定された一連の値とマージされ、ポリシーファイルにリストボックスの値が挿入されます。それに対して、このオプションが指定されると、既存の値は削除されないまま、対象となるレジストリにどんな値が設定されていても、リストボックスに設定された値が追加されます。
    EXPLICITVALUE
    このオプションはユーザが値とその名称を指定できるようにします。リストボックスは2列表示に変わり、1列目に値の名称、2列目に値が表示されます。このオプションはVALUEPREFIXオプションと同時に使えません。
    VALUEPREFIX 接頭辞
    この接頭辞は値の名称を決定するのに使います。接頭辞が指定されると、上述の初期状態での命名規則ではなく、接頭辞と自動カウントアップの整数をつなげたものが名称として使われます。例えば”SampleName”という接頭辞を指定すると、”SampleName1″、”SampleName2″などなどといった名称が生成されます。接頭辞は空白(””)にすることもできます。この場合は値の名称は”1″、”2″といった数字だけの名称になります。
    初期状態では、リストボックスには1列しか現われず、各項目の名称と値は同じになります。たとえばリストボックスの”name”という項目は、”name”という値になります。LISTBOXを使うときは、特別な理由がない限りADDITIVEキーワードを使って下さい。
    LISTBOXに有効なキーワードは下記のとおりです。

  • KEYNAME
  • VALUEPREFIX
  • ADDITIVE
  • NOSORT
  • EXPLICITVALUE
  • EXPANDABLETEXT
  • END
  • CLIENTEXT
    【注】
    Windows XP SP2ではLISTBOX ADDITIVE機能の問題が修正されています。より詳細な情報はこの文書の”Changes to LISTBOX ADDITIVE”をご覧下さい。
    ACTIONLIST
    入力欄を特定の状態に設定したとき、レジストリ値を任意の方法で変更したいときにアクションリストが使えます。
    【文法】
    ACTIONLIST
    [KEYNAME キー名]
    VALUENAME 値の名称
    VALUE 値
    END ACTIONLIST
    キー名
    これはレジストリキーへのパスで、任意です。すでに先行するCLASSで記述されているので、HKEY_LOCAL_MACHINE や HKEY_CURRENT_USERは含めないで下さい。キー名が指定されなければ、同じ階層の先行するキー名が使われます。
    値の名称
    変更したいレジストリ値名を指定します。このオプションを選択すると値がREG_DWORDの1になります。オプションをクリアすると、レジストリ値が削除されます。初期状態以外の値を指定したければ、対応するVALUENAME直下にVALUEON、VALUEOFFを使ってください。VALUENAMEは下記のように使います。
    VALUEON ONの値
    VALUEOFF OFFの値

    下記の例のように、頭にNUMERICをつけない限り、値は文字列になります。
    VALUE “Some value”
    VALUE NUMERIC 1
    VALUEの次にDELETEと記述すると(例えばVALUE DELETE)レジストリのエントリーが削除されます。
    下記にPOLICYとCHECKBOXにも使える、ACTIONLIST用の2つの変数を示します。
    ACTIONLISTON
    チェックボックスが選択された場合のアクションリストを指定します。
    ACTIONLISTOFF
    チェックボックスが選択されていない場合のアクションリストを指定します。
    【ACTIONLISTの例】
    下記にACTIONLISTONとACTIONLISTOFFの例を示します。

    POLICY  "接続要求を拒否する"
    EXPLAIN "有効化した場合、TSは接続受け入れを停止します"
    ACTIONLISTON
    VALUENAME "fDenyTSConnections"    VALUE NUMERIC 1
    END ACTIONLISTON
    ACTIONLISTOFF
    VALUENAME "fDenyTSConnections"    VALUE NUMERIC 0
    END ACTIONLISTOFF
    END POLICY
    

    追加の要素

    .admファイル言語は以下の追加要素もサポートしています。
    KEYNAME
    CATEGORY内部で使われるKEYNAMEキーワードは、そこに記述したアクションの結果、レジストリのどのキーを変更するかを定義します。KEYNAMEの後に、変更したい値を含むレジストリキーへのパスをつづけて記述します。先行するCLASSの部分ですでに定義されているので、HKEY_LOCAL_MACHINE や HKEY_CURRENT_USERは含めないで下さい。
    KEYNAMEが空白を含む場合は、必ず二重引用符でくくってください。
    VALUENAME
    POLICY内で使用可能なオプションを定義します。まずVALUENAMEキーワードを使った結果として、変更されるレジストリ値を指定します。例えば VALUENAME MyFirstValue などです。
    下記にVALUENAMEの用例を示します。再起動、シャットダウン、ログオン、ログオフ状態のメッセージを無効にするポリシーはこれらシステムメッセジーが表示されないようにします。

    POLICY!!DisableStatusMessages
    KEYNAME "SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"
    EXPLAIN!!DisableStatusMessages_Help
    VALUENAME "DisableStatusMessages"
    END POLICY
    

    これ以外の設定がない場合は、ユーザがオプションを選択したりクリアしたりすると、値は下記のような形式で書き込まれます。

  • 選択時。REG_DWORD型の 1 が書き込まれる。
  • クリア時。キー値が削除される。
    VALUEOFF、VALUEONを使うと、これら初期状態以外のオプションも使えます。グループポリシー・オブジェクトエディタの画面の下半分でこのオプションを選択するには、VALUENAMEがPART部分の中になければいけません。
    CLIENTEXT
    CLIENTEXTキーワードは、グループポリシー・オブジェクトエディタのどのクライアント側拡張機能が、クライアントコンピュータに特有の設定を処理する必要があるかを指定するときに使われます。初期状態では、レジストリ拡張機能は、管理テンプレート配下の設定済みのすべての設定を処理します。それに対して、CLIENTEXTキーワードが初期状態を変更すると、レジストリ拡張機能がそれらの設定をレジストリに配置した後、特定の拡張機能がそれらの設定を処理するようになります。
    CLIENTEXTはPOLICY記述の内部か、PART記述の内部になければなりません。そしてVALUENAMEが後に続く必要があります。
    次にCLIENTEXTの例を示します。

    POLICY !!DQ_Enforce
    #if version >= 4
    SUPPORTED !!SUPPORTED_Win2k
    #endif
    EXPLAIN !!DQ_Enforce_Help
    VALUENAME "Enforce"
    VALUEON  NUMERIC 1
    VALUEOFF NUMERIC 0
    CLIENTEXT {3610eda5-77ef-11d2-8dc5-00c04fa31a66}
    END POLICY
    

    CLIENTEXTキーワードに続くグローバル識別子は、クライアント側の拡張機能のグローバル識別子です。クライアント側の拡張機能は、HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNT CurrentVersionWinlogonGPExtensions配下のレジストリに一覧があります。
    VALUEON、VALUEOFF
    VALUEON、VALUEOFFはオプションの状態にもとづいて特定の値を記述するときに使われます。この機能を使うと、.admファイルを下記のように記述できます。

    KEYNAME キー名
    POLICY!!MyPolicy
    VALUENAME 変更したい値
    VALUEON "有効" VALUEOFF "無効"
    END POLICY
    KEYNAME キー名
    POLICY!!MyPolicy
    VALUENAME 変更したい値
    VALUEON 5 VALUEOFF 10
    END POLICY
    

    単純なポリシーとVALUEOFF、VALUEONを使ったポリシーの用法
    本節では初期状態のポリシー記述と、VALUEON、VALUEOFFをつかったポリシー記述の違いを示すために2つの例をあげます。これら2例の間には重大な違いがあります。
    【例1】
    この例ではVALUEON、VALUEOFFを明示的に使っていません。つまりユーザがポリシーの状態を変更したとき、管理テンプレートは初期状態の動作をします。

    POLICY!!EnableSlowLinkDetect
    EXPLAIN !!EnableSlowLinkDetect_Help
    KEYNAME "SoftwarePoliciesMicrosoftWindowsSystem"
    VALUENAME "SlowLinkDetectEnabled"
    END POLICY
    

    下記にポリシーの初期状態での動作を示します。
    ポリシー有効時
    DWORD値の 1 がレジストリに書き込まれる
    ポリシー無効時
    レジストリ値が削除される。
    ポリシー未構成時
    レジストリに何も起こらない。
    ポリシーを無効にしたときの動作に注意してください。レジストリに値 0 が書き込まれるのではなく、レジストリ値が削除されます。つまり、プログラムがポリシーを読みに行くと、レジストリ値が見つからないため、プログラム内の初期値を使うことになります。
    【例2】
    この例では、状態値が明示的に使われています。したがってユーザがポリシーを変更すると、管理テンプレートはこれらの値を使います。

    POLICY!!EnableSlowLinkDetect
    EXPLAIN!!EnableSlowLinkDetect_Help
    KEYNAME "SoftwarePoliciesMicrosoftWindowsSystem"
    VALUENAME "SlowLinkDetectEnabled"
    VALUEON NUMERIC 1
    VALUEOFF NUMERIC 0
    END POLICY
    

    下記に例2のポリシーの初期状態での動作を示します。
    ポリシー有効時
    DWORD値の 1 がレジストリに書き込まれる
    ポリシー無効時
    DWORD値の 0 がレジストリに書き込まれる
    ポリシー未構成時
    レジストリに何も起こらない。
    EXPLAIN
    EXPLAINキーワードは特定のグループポリシーにヘルプテキストを提供するのに使われます。Windows 2000では各ポリシー設定のプロパティ画面は説明タブがあり、ポリシー設定の詳細説明を提供しています。
    各グループポリシーには1個EXPLAINキーワードを含めることをおすすめします。EXPLAINの後には必ず空白を1個入れて、それから説明のための文字列を二重引用符に入れて記述するか、ヘルプ文字列への参照を記述します。

    POLICY!!Pol_NoConfigCache
    #if VERSION >= 3
    EXPLAIN!!Pol_NoConfigCache_Help
    #endif
    VALUENAME "NoConfigCache"
    PART!!Lbl_NoConfigCacheHelp1       TEXT
    END PART
    END POLICY
    .....
    [Strings]
    Pol_NoConfigCache_Help="ログオフ時の自動同期動作をユーザが変更しないようにする"
    

    上記の例では、ヘルプはオフラインファイルのオプションを提供しています。EXPLAINキーワードが #if VERSION の中に入っていて、この.admファイルがWindows 2000のグループポリシー・オブジェクトエディタ(バージョン3)だけで使われるようにしています。
    改行
    固定テキストに改行を入れたい場合は、下記の文法をつかってください。
    n = 改行する。
    nn = 空白行を1行入れる。
    #If Version によるバージョン比較
    IF VERSIONという条件文は、特定のポリシー設定を、利用しているグループポリシー・オブジェクトエディタのバージョンにもとづいて、管理テンプレートのノードとして表示するかどうかを制御します。IF VERSION条件文を使うと、.admファイルの一部をグループポリシー・オブジェクトエディタの過去のバージョンで、処理させたり無視させたりすることができます。例えば、SUPPORTEDタグはバージョン4以前のグループポリシー・オブジェクトエディタではサポートされていません。このため、SUPPORTEDタグを使っている部分はすべて #IF VERSION ~ #ENDIF でくくることをおすすめします。
    .admファイルのどの部分も、グループポリシー編集ツールの特定のバージョンでのみ評価されるように指定することもできます。
    バージョンを比較するには、次の文法に従ってください。
    #if Version (演算子) x
    #endif
    Version値に有効な演算子
    > (GT)
    より大きい。例えば、a > b は b より大きいという意味。
    < (LT) より小さい。例えば、a < b は b より小さいという意味。 == (EQ) 等しい。例えば、 a == b は a は b に等しいという意味。 != (NE) 等しくない。 >= (GTE)
    以上。例えば、 a >= b は a は b 以上という意味。
    <= (LTE) 以下。例えば、 a >= b は a は b 以下という意味。

    .Admファイルの文字列やタグの制限事項

    .admファイルや各種設定にはさまざまな制限事項があります。以下がそのすべてです。
    ファイル文字列タグの制限
    説明テキストの最大長
    4096
    カテゴリ説明テキストの最大長
    255
    EDITTEXT文字列の最大長
    1023
    以上

  • Active Directory管理テンプレート.ADMファイルの文法」への0件のフィードバック