ほんのささいなこと

調べたことや思ったこと。Google先生に聞いて10分で解決できなかった問題とか。

一般ユーザで管理者権限ユーザのパスワードをリセット

事象と背景

あるアプライアンス(中身はWindows 10)で管理者ユーザのパスワードが分からないため、リセットする方法

環境

  • Windows 10 20H2 Workgroup環境
  • 自動ログオン設定が有効になっており、一般ユーザ(user1)で自動ログオンする。管理者権限が無いため、無効に出来ない(パスワードも不明なので仮に無効に出来たとしたらログオンできなくなる)。
  • ローカルAdministrator: デフォルト無効状態。パスワードはセットされているかどうかすら不明。
  • 管理者ユーザ: ユーザ名はmanager。唯一ローカルAdministratorsグループに所属している。パスワードが不明。
  • 一般ユーザ: ユーザ名はuser1。Usersグループにのみ所属。自動ログオン設定されているため、このユーザのパスワードすら不明。

補足情報

  • OS Safe mode(セーフモード)でパスワードリセット可能という記事も見られるが、この環境ではリセット不可。
  • Safe modeで起動しても、ログオンユーザはuser1となり、Administratorにならない。権限昇格には管理者ユーザのパスワードが必要であり、通常Boot Modeと変わらない。
  • Windows 7とかの頃はSafe modeの場合無条件でAdministratorログオンしていた気がする
  • 本手順はWindows 11で必須要件となった、UEFI/SecureBoot環境では未検証
  • PassFab 4WinKey(有料)やiSunshare(無料?)等の3rd party toolを使えばもっと簡単にできそうだが、正規の方法でリセットしたかった

回避策概要

Windows installerで起動し、システムフォルダ(%systemroot%\system32)のutilman.exeをcmd.exeに置き換えることで、ログオン前にコマンドプロンプトを管理者権限で起動でき、ここからパスワードの変更などを行う

回避策手順

  1. Windows 10 Media Creation Tool等を使い、起動可能Windows Installer USBメモリを作成しておく
  2. 対象PCにUSBメモリを挿入し、USBから起動する
  3. 起動ディスク選択画面は、たいていのPCの場合、電源ボタンを押した直後からEsc, F2, F10, F12, Deleteキーのいずれかを連打(1秒間に2~3回くらいで十分)すればBIOSか起動ディスク選択メニューが出る
  4. Windowsインストールウィザード画面が表示されたらShift + F10キーを押下し、コマンドプロンプトを起動する
  5. カレントディレクトリがインストールメディアのX:になっているため、C:に切り替えて(パーティション設定によってはD:\やE:\となっていることもある)Utilman.exeのバックアップを取り、cmd.exeで上書きする

    pushd C:\windows\system32
    copy Utilman.exe Utilman.exe.org
    copy cmd.exe Utilman.exe
    
  6. Utilman.exeとcmd.exeのファイルサイズが同じになっていることを確認。ついでにUtilman.exe.orgがちゃんと作成されている(ファイルサイズはcmd.exeとは異なる)事を確認

  7. コマンドでシャットダウン

    shutdown /s /t 0
    
  8. USBメモリを抜いてからPCを起動する

  9. 前述の通り、自動ログオンが有効になっているため、user1で勝手にログインしてしまう。そのため、スタートボタンを右クリック > Shut down or sign out > Sign out
  10. ログイン画面に戻るため、ここで"Ease of access"アイコンをクリック
  11. コマンドプロンプトが管理者権限で起動するため、煮るなり焼くなりする。

    // Administratorアカウントを有効にしてパスワードをP@ssw0rdに設定するコマンド
    net user administrator /active:yes
    net user administrator P@ssw0rd
    
    // 既存管理者アカウントのパスワードをP@ssw0rdに変更するコマンド
    net user manager P@ssw0rd
    
  12. コマンドプロンプトを終了して1分くらい待つとログオン画面に戻る。

  13. 画面の適当な場所をクリックしてユーザ選択画面が出てきたら、Administratorが選択できるようになるため、設定したパスワードでログインする
  14. このままでは危険なため(誰でもパスワードを変更できてしまう)、C:\Windows\System32のUtilman.exeを削除し、Utilman.exe.orgの名前をUtilman.exeに戻しておく
  15. VM検証環境では再現しなかったのだが(Windows 10のバージョンに依存?)、実機ではutilman.exeの所有者がTrustedInstallerとなっているため、削除が出来ない。こちらの記事を参考に所有権を取得して削除(Local Administratorの所有者にするとなぜか削除できないため、通常ユーザに付与)。