一般ユーザで管理者権限ユーザのパスワードをリセット
事象と背景
あるアプライアンス(中身は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に置き換えることで、ログオン前にコマンドプロンプトを管理者権限で起動でき、ここからパスワードの変更などを行う
回避策手順
- Windows 10 Media Creation Tool等を使い、起動可能Windows Installer USBメモリを作成しておく
- 対象PCにUSBメモリを挿入し、USBから起動する
- 起動ディスク選択画面は、たいていのPCの場合、電源ボタンを押した直後からEsc, F2, F10, F12, Deleteキーのいずれかを連打(1秒間に2~3回くらいで十分)すればBIOSか起動ディスク選択メニューが出る
- Windowsインストールウィザード画面が表示されたら
Shift + F10
キーを押下し、コマンドプロンプトを起動する カレントディレクトリがインストールメディアのX:になっているため、C:に切り替えて(パーティション設定によってはD:\やE:\となっていることもある)Utilman.exeのバックアップを取り、cmd.exeで上書きする
pushd C:\windows\system32 copy Utilman.exe Utilman.exe.org copy cmd.exe Utilman.exe
Utilman.exeとcmd.exeのファイルサイズが同じになっていることを確認。ついでにUtilman.exe.orgがちゃんと作成されている(ファイルサイズはcmd.exeとは異なる)事を確認
コマンドでシャットダウン
shutdown /s /t 0
USBメモリを抜いてからPCを起動する
- 前述の通り、自動ログオンが有効になっているため、user1で勝手にログインしてしまう。そのため、スタートボタンを右クリック > Shut down or sign out > Sign out
- ログイン画面に戻るため、ここで"Ease of access"アイコンをクリック
コマンドプロンプトが管理者権限で起動するため、煮るなり焼くなりする。
// Administratorアカウントを有効にしてパスワードをP@ssw0rdに設定するコマンド net user administrator /active:yes net user administrator P@ssw0rd // 既存管理者アカウントのパスワードをP@ssw0rdに変更するコマンド net user manager P@ssw0rd
コマンドプロンプトを終了して1分くらい待つとログオン画面に戻る。
- 画面の適当な場所をクリックしてユーザ選択画面が出てきたら、Administratorが選択できるようになるため、設定したパスワードでログインする
- このままでは危険なため(誰でもパスワードを変更できてしまう)、C:\Windows\System32のUtilman.exeを削除し、Utilman.exe.orgの名前をUtilman.exeに戻しておく
- VM検証環境では再現しなかったのだが(Windows 10のバージョンに依存?)、実機ではutilman.exeの所有者がTrustedInstallerとなっているため、削除が出来ない。こちらの記事を参考に所有権を取得して削除(Local Administratorの所有者にするとなぜか削除できないため、通常ユーザに付与)。