私がスタッフをやっているjao Minecraft ServerのDiscordにて、とあるユーザーがWindows10のユーザー名を変更しようとしてやらかしたので備忘録。

注意事項

この記事ではレジストリを操作します。操作を誤ってしまったり、バージョンなどが違うなどの原因でコンピューター自体が動作しなくなる可能性があります。
毎度のことですが、この記事に記載されている内容を実行し、発生したいかなる問題について当サイト管理者は一切責任を負いません。自己責任でお願いします。

目次

環境

  • OS: Windows 10 1903 (Build 18362.476)
    (winverコマンドで確認)
  • Registry Finderバージョン: 2.39

概要

ユーザーがひとつしかなく、レジストリエディタでHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListProfileImagePathを編集し、再起動すると「アカウントにサインインできません」と表示される。本来であれば、ログインできる管理者権限のユーザーを一時的にもう一つ作りそっちで操作する必要があるが、今回は作らずにそのまま再起動し締め出されてしまった。

試したこと

丸数字のついている項目は今回有効だった行動です。後で詳しく解説します。
xがついている項目は不必要な行動だったため、簡単な解説のみ記載します。

  • ① Windowsのトラブルシューティングから、コマンドプロンプトを起動してnotepadを開き、トラブルシューティング環境でどのドライブレターがWindowsドライブに割り当てられているかを調べる。
  • x Windowsのトラブルシューティング環境下でadministratorを有効化
    通常のWindows環境とトラブルシューティング環境は異なり、トラブルシューティング環境下でadministratorを有効化しても通常環境下で有効化されるわけではない。
  • (②) C:\Windows\System32\Utilman.exeをバックアップして、cmd.exeに置き換え(コピー)。
  • x C:\Windows\System32\sethc.exeをバックアップして、cmd.exeに置き換え(コピー)。
    今回の環境では固定キー機能が無効化されており。Shiftを5回押しても反応なかったため実質的に意味のない行為に。
  • ③ ユーザーフォルダのフォルダ名を新しいユーザー名に変更。
  • ④ Windowsのトラブルシューティングからセーフモードで再起動し、ユーザーにサインイン、administratorを有効化。
  • x administratorアカウントでレジストリエディタを用いてC:\Users\旧ユーザー名からC:\Users\新ユーザー名に手動で置き換え。
    100を超える(環境によっては1000を超える)該当項目があったため途中でキャンセル。フリーソフトを使うことに
  • ⑤ フリーソフト「Registry Finder」を用いてエクスポート、C:\Users\旧ユーザー名からC:\Users\新ユーザー名に置き換え。
  • Utilman.execmd.exeに置き換えていたのを修正。Administratorを無効化

詳細

① Windowsのトラブルシューティングから、コマンドプロンプトを起動してnotepadを開き、トラブルシューティング環境でどのドライブレターがWindowsドライブに割り当てられているかを調べる。

Windowsサインイン画面の右下にある「電源ボタン」を開き、「再起動ボタン」をShiftを押しながらクリックすることで、トラブルシューティングに入ることができる。
再起動ボタンをShiftを押しながらクリックすると、「オプションの選択」画面になる。(端末によるが)「続行」「デバイスの使用」「トラブルシューティング」「PC の電源を切る」の選択肢があるので、「トラブルシューティング」を選択する。
その次に、「この PC を初期状態に戻す」「詳細オプション」の選択肢があるので、「詳細オプション」を選択する。
「詳細オプション」を開くと、「コマンド プロンプト」の項目があるので、それを選択する。ログインが要求される場合があるので、ログインする。

コマンドプロンプトが開いたら、notepadと打ち込んでエンターを押すとメモ帳が起動するため、「ファイル」→「開く」を押し、左側ナビゲーションバーの「PC」をクリックしたうえでWindowsがインストールされているドライブを調べる。サイズや内容物などを確認して調べるとよい。大抵はCドライブのままだろう。

② Utilman.exeをバックアップして、cmd.exeに置き換え。

①から継続して、コマンドプロンプトでC:\Windows\System32\ディレクトリ(フォルダ)に移動する。コマンドはcd /d C:\Windows\System32\
バックアップとして、ren Utilman.exe Utilman.exe.orgで名前を変更する。その後、copy cmd.exe Utilman.exeでコマンドプロンプトで偽装(?)する。

なお、Utilman.exeは「コンピューターの簡単操作」の起動先アプリケーションなので、これをすることでサインイン画面でもコマンドプロンプトを開くことができる。(今回、当人の環境ではこれが成功せず開いても5秒程度で閉じてしまっていた)
sethc.exeは固定キーのポップアップアプリケーションなので、サインイン画面でShiftを5回連続で押せば起動するというもの。

③ ユーザーフォルダのフォルダ名を新しいユーザー名に変更。

①、②から継続して、コマンドプロンプトでC:\Users\ディレクトリ(フォルダ)に移動する。コマンドはcd /d C:\Users\
move 旧ユーザー名 新ユーザー名 (例: ユーザー「ABC」の名前を「DEF」にする move ABC DEF)を実行しユーザーフォルダのフォルダ名を変更する。

④ Windowsのトラブルシューティングからセーフモードで再起動し、ユーザーにサインイン、Administratorを有効化。

③から継続するのであれば、コマンドプロンプトのウインドウを右上×ボタンで閉じれば「オプションを選択」を開くことができる。「トラブルシューティング」→「スタートアップ設定」→「再起動」でセーフモードに入ることができる。
再起動後、「6」を押し「セーフモードとネットワークを有効にする」を実行する。

そのあとまた再起動するため、その後で「サインインできないユーザー」にサインインする。サインインするとコマンドプロンプトが自動的に最大化画面で開く。
net user administrator /active:yesを実行し、Administratorアカウントを有効化する。

⑤ フリーソフト「Registry Finder」を用いてエクスポート、旧ユーザーフォルダから新ユーザーフォルダに置き換え。

フリーソフト「Registry Finder」の「Archive 64-bit」からアプリケーションをダウンロードし、解凍。RegistryFinder.exeを起動する。
必要があるならば、HelpからLanguageを選び、Japanese(日本語)化することができる。

上部ナビゲーションバーの「編集(E)」→「検索 Ctrl+F」を選択するかCtrl+Fを押して検索ウインドウを開き、「検索する値(F)」にC:\Users\旧ユーザー名を入力する。(例: C:\Users\tomachi)
検索ボタンを押して検索し、検索完了後に「ファイル(F)」→「エクスポート(E)」で該当するレジストリを保存(バックアップ)する。保存先はデスクトップなど後からアクセスできる場所に保管しておくこと。保存名は問わない。
保存後、「編集(E)」→「検索結果を置換(L)」を押し、「検索する値(F)」にC:\Users\旧ユーザー名、「置換する値(P)」にC:\Users\新ユーザー名を入力、入力内容に間違いがないことをよく確認の上「置換」をクリックする。


ここまで終わらせると、サインインできなかったアカウントでサインインできるようになっているはず。

⑥ Utilman.exeのcmd.exeに置き換えていたのを修正。Administratorを無効化

Utilman.exeをcmd.exeに置き換えたままにしておくと、サインインしなくても「コンピューターの簡単操作」のボタンを押すだけで管理者権限のコマンドプロンプトが使えてしまうというセキュリティがガバガバな環境になってしまうので戻さなければならない。また、Administratorもパスワードをかければ有効化したままでも構わないが、基本的にAdministratorアカウントを使うことはないので無効化しよう。

①同様にトラブルシューティングからコマンドプロンプトを開き、次のコマンドをそれぞれ順に実行する。

cd /d c:\windows\system32
del utilman.exe
ren utilman.exe.org utilman.exe
net user administrator /active:no

上から、「現在居るフォルダ(カレントディレクトリ)をc:\windows\system32に変更」、「utilman.exeを削除」、「utilman.exe.orgからutilman.exeに名前変更」、「administratorを無効化」。

もし、sethc.exeを置き換えたのならば、次も実行するべき。

del sethc.exe
ren sethc.exe.org sethc.exe

参考サイトなど

Categories: 備忘録