Q

Windows 2000 Professionalマシンの中に,ドメインへログオンすると,デスクトップが表示されるまでにかなり時間がかかるものがあります。ログオン時に,どこかで問題が発生していると思うのですが,どうやって調査するのがよいでしょうか?

A

ログオン処理に時間がかかる場合は,様々な原因が考えられます。その中で,これまでサポートしてきた経験から言うと,ネットワーク関連に問題があり,WinLogonが実行するプロファイル処理あるいはグループ・ポリシー処理が影響している場合が最も多いようです。

プロファイルの経過をファイルに出力
 そのため,まずは問題のクライアント上でプロファイル関連のデバッグ・ログを取得することをお薦めします。デバッグ・ログは%SystemRoot%\Debug\usermode\userenv.logにファイルとして作成されます。NT 4.0まではデバッグ・ビルドのUserenv.dllをMSDNなどから入手しなければ,ログを取得できませんでした。しかし,Windows 2000以降では単にレジストリを設定するだけで簡単に取得可能になっています。

 レジストリ・エディタでHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonというレジストリ・キーに,UserEnvDebugLevelという名前でREG_DWORD型の「10002」という値を設定してリブートします(図1)。これで,ログをファイルとして記録できるようになります。


△ 図をクリックすると拡大されます
図1●プロファイルの適用状況を外部ログ・ファイルに記録する設定

 このキーに設定する値に関しては,日本語版のサポート技術情報(221833)では,単に「10002という値を設定する」とだけ記載されています。しかし,英語版のサポート技術情報を確認すると,16進数で0x00000000(無効)/0x00000001(ノーマル)/0x00000002(VERBOSE)/0x00010000(ログ・ファイル)/0x00020000(デバッガ)の5つの値が利用できることが分かります。

 つまり,「10002」は進行状況も含んだVERBOSEモードでログ・ファイルとして出力するという設定です(デフォルトはノーマルでログ・ファイルとして出力する「10001」)。この設定により,図1(B)に示したようなログ・ファイルを取得できます。ここには内部の関数名などが記録されており,その名前から処理の内容を類推できます。よって,障害発生環境と正常環境との間で同様の操作を行い,おのおののuserenv.logファイルを比較することで問題個所を絞り込むことが可能です。

トラブル発生時のみに利用しよう
 なお,userenv.logファイルは致命的な問題が発生した際に既に作られている可能性があります。また,ファイル中には時刻が記録されているものの,日付は記録されません。そのため,調査範囲を明確にするため,既存の%SystemRoot%\Debug\user-mode\userenv.logファイルが存在するかを確認し,存在する場合は削除,あるいはリネームしてください。

 %SystemRoot%\Debug\usermode\userenv.logファイルは,通常使用時に有効にしているとサイズが大きくなってしまいます。そのため,トラブルシューティングを終えたら,忘れずにログを取得しない設定へ戻しておいてください。ログを取得しないようにするには, レジストリ値のUserEnvDebugLevelそのものを削除するか,あるいは無効の「0」を設定します。

小森 博司