Back to the Eight

Windows8のユーザディレクトリを丸ごとDドライブに移動する方法

※この記事は古い。新たに行う方は後述の「Back to the Eight (Again and again)」を読まれた方がよろしいかと。

これって、よくある~って奴である。まあ、この手の話題は例によって米国発だが、そのページを探し出せないので、取りあえず。(あんまり本気に探さないけど判明したら載せます。)

私の鼠コンピュータ2号はノート型であるが、起動ディスクCドライブがSSD、DドライブにHDDを搭載している。去年の終わり頃に購入し、1200円でWin8を購入する特典に乗っかったまでは良かったが、インテル殿デバイス用のドライバすら無く、お試しはしたものの、さっさとWin7に戻していた。ところが先日鼠コンピュータのサイトを覗いてみると、全デバイス用のWin8用ドライバがダウンロードできるようになっていた。ちょうどクライアントHyper-Vも試してみたかったので、Back to the Eight. それまで築いてきた数々の開発環境、数多ある仮想「俺」のメールアドレスの設定なんぞを塵芥に帰しながらあっさりCドライブをフォーマットし、クリアインストール。
起動したところで、パフォーマンス最優先設定とか、SSD向けのシステム最適化を行い、更に大量のアップデートを当てた後、やっとタイトルである。

私のPCの場合、SSDの恩恵は起動時間にある。ゴジゴジ書き換えが多い開発リポジトリとかクラウド連携ストレージとかはHDDに乗せる。つまりUsersディレクトリは丸ごとHDDに載せるのが早い。

Win8ではユーザディレクトリ内の個々のフォルダであればプロパティから場所を他のドライブ上のフォルダに割り当てることは比較的容易である。でも私の望みはUsersフォルダごと、なのである。Win7ならば、レジストリをゴニョゴニョすれば、って記事はあった。確かにそのレジストリキーはWin8でも残っているけれど、アクセス制限がかかって変更が効かない上に、そこだけで果たして十分なのかは分からない。

いろいろ調べて(たぶん)米国のどなたかのブログと、そのリプライの中から次の手順で思うような配置ができた。レジストリを弄る必要もない。スーパーユーザー権限を持ったダミーのユーザーアカウントを作る必要もない。ただ、実施するにはWindows8のインストールCDが必要である。1200円に追加でメディア代を払って送付されたディスクには"backup"と書かれているが、それで良い。以下、日本語版なので文中、多少のアレンジはしている。

尚、例によってここにある手順を実施した結果、あなたがどんな被害を被ろうとも、私を含めて誰も何も保証しないので念のため。

[目的]
SSDであるCドライブ上のUsers(日本語版では「ユーザー」)フォルダをDドライブ上に移す。

[前提]
現在CドライブにインストールされたWindows8が正常に起動し、DドライブにはまだUsersディレクトリが無い。Cドライブに「ユーザー」フォルダがあってその中に自分の移したい実ディレクトリと、共用の仮想ユーザ(Defaultとか)のディレクトリが含まれている。たくさんのユーザIDを登録してしまっているディスクでちゃんと動くかは…自分でやってみて下さい。

[手順]
(1) Win8インストールディスクで起動

(2) 最初にキーボードの種類なんぞを聞いてくるので適当に入力して「次へ」

(3) インストールを実行するボタンが出てくるが、ここで慌てずAlt-r、ディスクの修復モードに入る。

(4)「トラブルシューティング」→「詳細オプション」→「コマンドプロンプト」とボタンを辿り、DOS画面(って呼び方もなんだかなー)を開く。

(5) ここでひょっとしたらPCによって異なるかも知れない。プロンプトにc:とかd:とかe:とか入れ、dirを駆使しながらどのドライブが通常起動時の起動ディスクで、どのドライブが移動したい先のドライブかを確認する。インストールディスクで起動したらドライブレターの割り当てが変わるようだ。私の場合、SSD(通常はCドライブ)はEドライブ、HDD(通常はDドライブ)はDドライブのままだった。因みにCドライブはdirしても「システム予約」とかで中身が表示されなかった。即ちこの状態ではUsersディレクトリをEドライブからDドライブに移すことになる。
以降、この状態と仮定して以下の手順を記す。

(6) コマンドプロンプトで次をタイプしてリターン
    xcopy /e /k /o /h /b e:\Users d:\Users
 結構たくさんコピーされる。和名「ユーザー」は使わない。尚、このコマンドの入力直後に、書き込もうとしているd:\Usersはファイルか、ディレクトリか、聞いてくることがある。無論ディレクトリ"D"を選ぶ。

(7) 念のためdドライブにUsers、その下に自分のIDのファイル群があるか眺めて確認する。

(8) 次のコマンドをタイプしてリターン。このコマンドでオリジナルのファイルは消える。
    rd /s e:\Users

(9) 次のコマンドをタイプしてリターン。
    mklink /d e:\Users d:\Users
    これでEドライブ上にd:\Usersへのリンクが張られる。察しの良い諸兄の中には mklink /d c:\Users d:\Users ではないのかと疑われる方もおられるが、そこは再起動後に張り直されるようである。さっすがマイクロソフト。

(10) 通常モードでSSDから再起動、ログインできることを確認する。(9)でしくじっているとログイン直後にエラーが出てログアウトしろって言われる。正常にログインできたらDドライブの直下に「ユーザー」フォルダができているはずである。(フォルダの名称は、誤解しやすいローカライズ機能なんか省いて英語表記のままにしてもらいたい。>マイクロソフト)

今のところこれで動いているが、もしかしたら何かの拍子にエラーが出るかも知れない。その時は自力で解決し、情報発信してください。

[追記]
上と同じコマンドオプションでProgramDataディレクトリをDドライブに移動してみたら、こちらもうまくいった。問題がおきた。この移動が直接原因かわからないが特定のWindows Updateのパッチが完了しない。ProgramDataをコピーバックして今のところこの症状は収まっている。Usersフォルダの時もそうだが、設定後の初回起動時に、ログイン直後にやや画面の瞬停が起こる。二回目以降は発生しないが(いや、やはり二回目以降も起こっている)、ちょっと心臓に悪い。これらの操作はrobocopyあたりをキーに検索するともっとスマートにやってる人がいると思う。
TempをRAMディスクに追いやったり、ハイバネートを切ったり、ファイルアクセス時刻の更新を切るなどすれば、コールドスタートだってそれほど遅くない。マウスクリックして指を上げ終わるより早くウィンドウが開く。ま、これから大物のアプリを入れたりするので、徐々にもっさりしてくるんだけど。

こうやってHDDにリソースを移すってことはそれだけ遅くなっていることになるのだし、しかもより故障率の高そうなHDDが壊れるとシステムが起動できなくなる。体験上、2.5インチのHDDは3.5インチに比べて極端に故障しやすい。今も目の前に二個のゴミが転がっている。それでも「速さ」は魅力的だ。SSD二枚構成もアリと思うけど、SSDはどうしても「焼いている」と言う感覚が…あー、いや、故障の話だ。システムの安定性が落ちるのは抗いようが無い。断言する。定期的なバックアップとか、私のように刹那的なPCの使い方(いつでもクリアして、再設定の手間を惜しまない)をしてる方以外には今回のような変造はお勧めしない。が、大枚はたいて新しいPCを買ったのなら、その性能を遺憾なく発揮させねば頗るもったいないと思う。矛盾するようだが、今日日、これほどネットがタダのストレージやメール環境、オフィス系のソフトですら提供しているのだから、個人のPCへの負担は少なくなってきている。速さにかまけてあれこれ仕事を増やすのではなく、使うべき「重い」ソフトウェアをスポットで装備して環境としては身軽になって良いのである。