GPO を無効にしても、設定が元に戻らない

対象プラットフォーム

質問

現在Active Directoryの管理を行なっています。

グループポリシー(GPO)に独自のテンプレートを拡張して、図1のように管理共有を無効にするようにしていたのですが、使用しているプロダクトによっては問題が発生するというクレームがあったため、このGPOを外しました。


図1:独自GPOの適用

しかし、利用者から以前の設定に戻らないというクレームがあったため確認したところ、確かに管理共有を無効とした設定が残ってしまっているようです。

Windows NT 4.0までのシステムポリシーと比べたWindows 2000以降のGPOの機能強化点として、設定を外すことでGPO設定前の設定が復元されるといった記述があるのですが、なぜ元々の設定が復元されないのでしょうか。

回答

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

GPOの「復元」の仕組み

GPOの復元を実現しているカギはレジストリ内の各所にある図2のようなPolicies以下に存在するレジストリ群にあります。GPOによる設定は、基本的にこのレジストリ以下の各種の値を操作します。このレジストリ以下の値はGPOと連動しており、GPOが未定義の時はキーそのものが存在せず、GPOが定義されている場合は定義にしたがって何らかの値が設定されています。


図2: Policiesレジストリの例

なお、Policies以下のレジストリを直接編集することも可能ですが、基本的にはGPO経由で操作するようにしてください。

GPOを参照する各サービスやアプリケーションは、図3のように、基本的にはPolicies以下の対応するレジストリの値を参照し、適切な値があればそれを利用し、なければ従来のレジストリの値を参照するという動作を行ないます。当然これは個々のサービスやアプリケーションがPolicies以下を参照する処理を明示的に行なっている必要があります。


図3: 処理概要図

GPOによる設定を非適用状態に戻すと元の値が復元されるという機能は、ここまで説明した実装を利用し、Policiesレジストリ以下に値がなくなると本来のレジストリの値が用いられるという機能を活用しているに過ぎません。

GPOだからといって常に復元はされない

ここまでくれば理解できると思いますが、今回のようにGPOで本来のレジストリを直接修正してしまっているような場合は、GPOの設定を非適用にしても元々の値は復元されません。

また、GPOの設定はマシン起動時点(およびそれ以降定期的)に反映されるものですので、GPOで設定が変更されたマシンをネットワークから切り離した場合、GPOによって変更された設定はそのまま残ります。

Windowsに標準で添付されているGPOの設定は、基本的にPolicies以下のレジストリを修正するようになっていますが、今回のようにGPOで独自に本来のレジストリ領域の値を修正しているような場合は、こうした挙動を理解した上で運用を行なうようにしてください。

注記・補足

  1. 本文書は、日経 Windowsプロ 2003 年 3 月号の「トラブル解決 Q&A コーナー」に掲載された「グループ・ポリシーの設定を無効にしても設定内容が元に戻らない」の草稿を筆者の方で HTML 化して掲載しているものです。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2003-06-19 00:58:33 JST
webmaster@monyo.com