△ 図をクリックすると拡大されます
図1●レジストリの修正を適用するようにした独自グループ・ポリシー
Q

現在Active Directoryを管理しています。グループ・ポリシー・オブジェクト(GPO)を独自のテンプレートで拡張し,レジストリで管理共有を無効にするようにしましたが(図1),利用環境によっては問題が発生したため,このGPOの利用をやめました。しかし,それでも利用者からは以前の設定に戻らないといわれました。確認したところ,確かに管理共有を無効とした設定が残っているようです。Windows 2000以降のGPOでは,設定を外せば設定前の状態に復元すると思っていたのですが,なぜ復元されないのでしょう。

A

一般的なGPOの設定は,確かに[未構成]状態に戻すと元の値が復元されます。しかし,この機能は実際には「復元」ではなく,レジストリを巧みに活用することで同等の機能を実現しているものです。そのため,この機能を理解していないと今回のように一見不可解な事象が発生します。

GPOは独自のレジストリ値で実現
 GPOの復元を実現しているカギはレジストリの各所にあるPoliciesというキーの下に格納されている値にあります。GPOは,基本的にこのPolicies以下の各種値を操作して設定を反映させています。これらの値はGPOと連動しており,GPOが未定義のときはキーそのものが存在しません。そして,GPOが定義されている場合は,その定義にしたがって何らかの値が設定されています。


図2●グループ・ポリシーとレジストリの設定を適用する流れ

 GPOを参照する各サービスやアプリケーションは,まずPolicies以下に対応するレジストリ値がないかを確認し,適切な値が設定されていればそれを利用します(図2)。Policies以下に値がなければ,従来のレジストリの値を参照し,そこにも設定がなければ標準値を使って動作するようになっています。GPOにおける一般的な設定を非適用状態に戻すと,Policies以下の値がなくなるため結果的に元のレジストリ値が利用されるというのが,GPOで元の設定が復元する仕組みです。

レジストリ編集のGPOは復元不能
 そのため,今回のGPOのように本来のレジストリを直接修正してしまっている場合は,GPOの設定を非適用にしても元々の値は復元されません。また,GPOの設定はマシン起動時点(およびそれ以降定期的)に反映されるものですので,GPOで設定が変更されたマシンをネットワークから切り離した場合も,変更された設定はそのまま残ってしまいます。GPOを使うに当たっては,こうした挙動を理解した上で運用を行うようにしてください。

高橋基信