Windows Serverのログオン関連トラブル(解決編)

Windows Serverのログオン関連トラブルのつづき。解決したので忘れないようにメモ。

メインの問題は、やっぱり自動ログオンが設定されていたことだった。

自動ログオンが壊れるとき

レジストリのHKEY_LOCAL_MACHINE$SOFTWARE$Microsoft$Windows NT$CurrentVersion$Winlogonキーをレジストリエディタで見てみる。

たとえばユーザ Administrator(パスワード password)による自動ログオンを設定した直後、レジストリキーの値は次のようになっている。

  • DefaultUserName:Administrator
  • DefaultPassword:password
  • AutoAdminLogon:1

その後、別のユーザ hoge(パスワード pass)が1度でも対話的にログオンすると、キーの値は次のように変わる。

  • DefaultUserName:hoge
  • DefaultPassword:password
  • AutoAdminLogon:1

よく見ると、ユーザとパスワードが一致していない。しかし、自動ログオン機能が有効になっている。その結果、マシンが起動してログオン画面を表示するたび、必ずエラーダイアログを表示するようになる。ユーザ Administrator での自動ログオンはもうできない(ユーザ hoge による対話的ログオンはできる)。

自動ログオンが壊れたときの対処

(1) パスワードを再設定する

ユーザ hoge でログオンしていても、レジストリの DefaultPassword は見えてしまう。実際に今回、DefaultPasswordに( hoge のパスワード pass と異なる)見たことのないパスワードっぽい文字列が設定されていたのを見て、Administrator のパスワードを特定できた。

hoge でマシンに入り、レジストリから拾ったパスワードを使って、再度ログオンする。上の例の場合は password という文字列を使って、Administratorでログオンする。その後、CTRL+ALT+DELETE から表示されるメニューで、パスワードを変更する。

(2) 自動ログオンを無効にする

上のレジストリキーを、次のように書き換える。

  • DefaultPassword:(空にする)
  • AutoAdminLogon:0

DefaultPassword の値が入力されていなければ、AutoAdminLogonは自動的に0(false)になるらしい。

(3) スクリーンセーバーの設定を必須にする

グループポリシーオブジェクトブラウザで、スクリーンセーバーの設定を行う。ここでの設定が、デスクトップ右クリック→ [プロパティ] で確認できるスクリーンセーバーの設定より、優先される。グループポリシーオブジェクトブラウザの表示方法は、[ファイル名を指定して実行] から「gpedit.msc

左側ペインのツリーで、[ユーザーの構成] → [管理用テンプレート] → [画面] を選択する。次の2つの設定をする。

  • [スクリーンセーバーの実行可能ファイル名] :scrnsave.scr を指定する
    • マシンパフォーマンスを落とさないために、空のスクリーンセーバーが推奨されているので、従う。
  • [スクリーンセーバーパスワードで保護する] :有効にする
    • これにより、デスクトップ右クリック→ [プロパティ] でパスワード保護を無効にできなくなる。
結論

自動ログオン、キケン。自宅サーバならよいと思うけど…

以上。