最後まで原因が分からなかったのですが、なぜか、急に「Windows7にログオンできない」という現象が起こりました。
対処方法の結果から言ってしまうと、我が家のPCのケースでは、管理者権限でログオンして、レジストリを1行削除したら解決しました。
こちら、同じような症状でも人によって細かい状況が違う場合があり、一概にどうすれば必ず直るというのが言えるような現象ではありません。
今回の記事は、あくまで一例として、我が家のPCでログオンできるようにするまでの流れを解説します。
ただ、SE的な観点から作業を行っていますので、完全に同じ状況でない方にも参考になるのではないかと思います。Windows7にログオンできない現象で悩まれている方は、ぜひ参考になさってください。
※こういった記事の決まり文句となりますが、本記事の内容を実施して発生した損害等への補償は一切行うことができません。実施される場合は自己責任で行っていただきますようお願いいたします。
【目次】
◆Windows7にログオンできなくなった
◆User Profile Serviceに関するエラーの対処方法
◆現状の把握
ProfileList
フォルダ
ユーザープロファイル
◆対応方針のまとめ
◆実際の対応
レジストリのバックアップ
レジストリの編集
状況を確認
◆終わりに
Windows7にログオンできなくなった
まず、どのような現象が起こったのかをご説明します。
我が家のWindows7 PCは、このように管理者と一般の、2つのユーザーを作っています。普段は一般の方のユーザーを利用しています。
いつものように、こちらの一般ユーザーをクリックしてログオンしようとしたところ、
─────────────────
User Profile Service サービスによるログオンの処理に失敗しました。
ユーザー プロファイルを読み込めません。
─────────────────
というメッセージがでてきて、OKを押すと先ほどのユーザー選択の画面に戻ってしまいました。
User Profile Serviceに関するエラーの対処方法
インターネットでいくつかの情報を見ましたが、やはり、公式サイトが一番信頼できるだろうといういことで、こちらのMicrosoftのサイトを参考に対処することにしました。
↓
ユーザー プロファイル サービスによるログオンの処理に失敗しました” エラー メッセージが表示される
ご覧いただくと分かるのですが、方法が3つ掲載されています。
- 方法 1: ユーザー アカウント プロファイルを修正する
- 方法 2: Windows にログオンし、データを新しいアカウントにコピーする
- 方法 3: エラーの SID を削除して、新しいプロファイルを作成する
方法2は、参照するように書かれているページが存在しないようで、どういう意図か分からないのですが、他のサイトも調べた結果、おそらく、今「一般ユーザー」のデータが保管されているフォルダのデータを、新しく作ったフォルダに全てコピーするという作業が必要になります。
データはたくさん保管しているので、コピーも時間がかかることが予測され、これはやりたくありませんでした。
残る方法は、方法1と方法3です。これらは、いずれもレジストリの同じ部分をいじる必要があります。
私の場合、最初に方法1を試そうとしましたが、状況的に適用することができず、結果には方法3の一部を実施することになりました(方法3でも、部分的に適用できない部分がありました)。
上記のMicrosoftのサイト、ならびに他のいくつかのサイトを見て、以下の3つが関係しそうだということが分かりました。
- レジストリに登録されている、ProfileListの値
- ユーザーに割り当てられたフォルダー
- システムのプロパティにある、ユーザープロファイルの設定
現状の把握
先ほど今回の問題に関係ありそうなこと3つを整理したので、それらが我が家のPCでどのような状況になっているかを確かめてみることにしました。
ProfileList
まずはレジストリ エディターを開きます。スタートメニューの検索ボックスに「regedit」と入れると出てきます。
非常にたくさんのキーが登録されていて、ProfileListを探すのは手間がかかりますので、私はこのように編集メニュー内の検索を利用しました。利用しなくても、パスを順にたどっていけば目当てのキーにたどり着きます。
最下部にパスが表示されますので、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
に完全に一致していることを確認します。
ProfileListのフォルダを展開すると、このような一覧が表示されました。
一番下の、S-1-5-21-xxxxxxxxxx-500.bakをクリックしてみると、このように「Guest」の値が登録されていました。これが、一般ユーザー用の値のバックアップだと(「.bak」なので)考えられます。
次に、「.bak」がついていない下から二番目を確認しました。こちらは、「.bak」と同様の値だろうと予想したのですが・・・
このように、「Guest」ではなく「TEMP」となっていました。ここが不具合の原因となっていそうです。
下から三番目を見ると管理者ユーザーの値になっていて、名前の長い下の3つが自分で作ったユーザー関係の値だということは間違いなさそうだと思いました。
フォルダ
先ほどレジストリの値でフォルダのパスが登録されていました。
コンピュータ > ローカルディスク > ユーザー
と進んでいくと、一般ユーザーである「Guest」、管理者ユーザー、そして、謎の「TEMP」のフォルダがありました。
この「TEMP」は少々気になります(が、最終的にそのまま残すことにしました)。
ちなみに、システム屋の間では、「bak」や「bk」は「backup」の略でバックアップを意味し、「TEMP」や「tmp」は「temporary」、つまり一時的に作られるものを意味します。そのため、TEMPというフォルダは本来は一時的に作られるだけで自動的に削除されるのかなあと思いますが、そこはMicrosoftの方でないと分かりませんね。
ユーザープロファイル
最後に、ユーザープロファイルを確認します。
スタートメニューをクリックして出てくる「コンピュータ」を右クリックし、「プロパティー」を開きます。
「設定の変更」をクリックします。
「詳細設定」タブをクリックします。
「ユーザープロファイル」の中にある「設定」をクリックします。
すると、ユーザープロファイルの一覧が表示されます。
内容を見ると、一番上に、「一般ユーザー」である「Guest」があり、その下には管理者ユーザーのものがあり、レジストリにもフォルダにも存在した「TEMP」はありませんでした。不整合が発生していることが分かります。
なお、「既定のプロファイル」というのはシステム的に初めから用意されているもので、削除できません。新しいプロファイルを作ったとき、デフォルトの値がこのプロファイルからコピーされるそうです。
予想なのですが、一般ユーザーでログオンしようとしたとき、レジストリのS-1-5-21-xxxxxxxxxx-500の値が「Guest」ではなく「TEMP」になっていたため、「TEMP」のユーザープロファイルを探すと思いますが、ユーザープロファイルには「TEMP」は存在しません。そこで不整合が起きてログオンできなかったのではないかと思います。
対応方針のまとめ
不整合の原因となっているレジストリの値を修正することにしました。まずは、現在おかしなことにないる、S-1-5-21-xxxxxxxxxx-500を削除します。
その後、S-1-5-21-xxxxxxxxxx-500.bakと同様の値を使ってS-1-5-21-xxxxxxxxxx-500を作り直す必要がありますが、これは手動で作らなくても自動的に作られるかもしれません。
そこで、
まずは削除だけする。
↓
シャットダウン、起動※
↓
ログオンを試す。
↓
ログオンできればそれでOK。
おそらく、S-1-5-21-xxxxxxxxxx-500が自動で作成されており、TEMPのフォルダが削除されている?
できなかった場合、S-1-5-21-xxxxxxxxxx-500が自動で作成されなかったものと思われる。
↓
xxxxxxxxx-500bkからxxxxxxxxx-500を手動で作成
↓
シャットダウン、起動
↓
ログオンを試す
という方針で作業することにしました。
※なぜここで、再起動ではなく、わざわざシャットダウンして起動しているのかという点ですが、これらは全く同じようで、実は、シャットダウンして起動するという動作の方が、よりしっかりとした再起動になっています。
再起動ではダメで、シャットダウンして起動しなければならないシーンというのが存在しているのです。逆は見たことがありません。
そのため、より確実と思われる、シャットダウンして起動という方法を選択しています。
再起動でもおそらく大丈夫だったのですが、SEの経験上、なんとなく、きちんとシャットダウンした方がよいかと思いました。
実際の対応
ここから、実際に対応した手順を書いていきます。
レジストリのバックアップ
どんなに単純な作業だったとしても、レジストリになんらかの手を加えるのであれば、バックアップは必ず取得することをおすすめします。
取得方法は非常に簡単です。
レジストリエディタを開き、
ファイル > エクスポート を選択して、適当な名前をつけて保存します。
エディタをクリックすると「応答なし」と出る間はファイルの生成中なので、しばらく待ちます。私の場合、1分ほどだったと思います。5分はかからない程度だと思います。
出来上がるのはこんなファイルです。アイコンが出てきても処理が終わっているわけではありません。レジストリエディタが操作できるようになったら、処理も終っています。
ちなみにバックアップから復元する方法ですが、ファイルをダブルクリックするだけです。
レジストリの編集
この行(値が「TEMP」になっていたもの)を消してみることにします。
右クリックして削除を実施します。
シャットダウンと起動
作業方針のところで書きましたが、私は念には念を入れて、再起動ではなくシャットダウンをしてから電源ボタンで起動しました。
状況を確認
ユーザー選択画面で一般ユーザーをクリックします。
今回は、「ようこそ」と出てきて良い感触です。
そして、きちんとログオンに成功することができました。
ひとまずこれで完了ですが、一応レジストリやフォルダがどうなったか確認しておきます。
まずはレジストリ。こちらは予想通り、S-1-5-21-xxxxxxxxxx-500として値が「Guest」のものが自動的に作られていました。「.bak」の方は削除されたようです。
続いてフォルダーですが、こちらは、しっかり「TEMP」が残ったままとなっております。気持ち悪いので削除したいところですが、このゾーンにあるフォルダを手動で勝手にいじって起きるトラブルというのもあるようなので、あえていじらずにこのまま放置することにしました。
何も変わっていないと思いますが、念のためユーザープロファイルも。
やはり、何も変わっていませんでした。
終わりに
こういうエラーへの対応の際、できるだけ余計なことはしないのが無難です。それから、レジストリを編集する必要がある場合、必ずバックアップを取ることをおすすめします。取るのは簡単ですし、バックアップがあれば復元も簡単です。
バックアップはいつまで保管しておけばよいのかというのは、一概に言う事はできません。大したサイズのファイルではないかと思いますので、パソコンを処分するまで取っておいてもよいくらいです。
冒頭でも書かせていただきましたが、本記事の内容を実施する場合には、くれぐれも慎重に、また、自己責任で行っていただきますようお願いいたします。