Q

Windows 2000のActive Directoryドメイン環境でグループ・ポリシー・オブジェクト(GPO)を変更しましたが,うまく反映されないマシンがあるようです。そこで反映状況を確認しようとしましたが,イベント・ログを見てもGPOの適用状況がよく分かりません。GPOに関する詳細なログを見る方法はありませんか?

A

Windows 2000のActive Directoryドメイン環境のデフォルト設定では,GPOが適用されるとその記録がイベント・ログに残ります。しかし,これだけでは,GPOの適用経過,適用時間,適用可否を確認することはできません。

 GPOが適切に適用されていないような場合は,GPOに関するより詳細なログを出力することで,現象をより詳しく調べることができます。詳細なログは,イベント・ログとして出力する方法と,外部ファイルへ書き出す方法の2種類があります。


△ 図をクリックすると拡大されます
図2●レジストリを編集することでグループ・ポリシーの詳細な情報がイベント・ログに記録されるようになる

イベント・ログとファイルで出力可能
 まず,イベント・ログでGPOに関連する詳細な情報を記録するには,レジストリを編集します。regeditまたはregedt32といったレジストリ・エディタでHKEY_LOCAL_MACHINE
\Software\Microsoft
\Windows NT
\CurrentVersionに「Diagnostics」という新しいキーを追加し,このキーに「RunDiagnosticLoggingGroupPolicy」というDWORD値を追加して「1」というデータを設定します(図2)。これで,すぐに詳細ログの表示は有効になります。マシンを改めて再起動する必要はありません。

 イベント・ログの詳細ログの設定を有効にすると,GPOの更新状況にかかわらず適用周期の5分ごとに,詳細なイベント・ログが書き込まれます。これにより,GPOの適用状況をログの種類(情報,警告,エラー)と説明で確認できます。GPOが正しく適用されている場合,「ソース」がUserenv,「イベントID」が1000という複数のイベントが記録され,「種類」や「説明」はイベントごとに異なります。


△ 図をクリックすると拡大されます
図3●レジストリの編集で外部ファイルに,詳細なログを保存することも可能

 外部ファイルにGPOの詳細ログを出力する場合もレジストリの編集が必要です。レジストリ・エディタでHKEY_LOCAL_MACHINE
\Software\Microsoft
\Windows NT
\CurrentVersion\Winlogon
に「UserenvDebugLevel」というDWORD値を新たに追加し,16進数で「0x30002」または「0x10002」を設定します(図3)。もし警告とエラーのみでよければ「0x30001」を,Userenv.logファイルへの出力を止めたければ「0x30000」を設定します(いずれも16進数)。

 このようにレジストリを設定すると,%windir%\Debug\UserModeにUserenv.logというログ・ファイルが生成されるようになります。ログは時刻とともに記録されますが,日付は記録されません。この中には,GPO処理で発生したイベントの「プロセスコード」,「処理時刻」,「プロセス名」,「イベントの説明」が記録されており,イベント・ログよりも,さらに詳細なログを確認することができます。

状況に合わせて2種類を使い分ける
 ここで紹介した2種類の詳細ログは,適用状況の確認をする場合はイベント・ログの設定,トラブルシューティングなどでより詳細な情報が必要な場合は外部ログ・ファイル,と使い分けるのがよいでしょう。ただし,これらの設定を有効にするとログ・サイズが増加するため,GPOの設定確認やトラブルシューティングの際などに利用を限定したほうが無難です。

 また,GPOの管理を効率的に行いたい場合は,「グループ・ポリシー管理コンソール(GPMC)」が便利です。Microsoft .NET Framework の導入されたWindows XP Service Pack(SP)1,もしくはWindows Server 2003ベースのマシン上で実行することにより,Windows 2000 ドメインまたはWindows Server 2003 ドメイン内のグループ ポリシーを管理することができます。GPMCの最新版SP1はマイクロソフトのWebサイト上で公開されています(該当サイト)。

鹿島 明佳