Windows7でUsersを移動
Windows7のCドライブをSSDにしました。HDDに比べると容量が限られていることと、書き込み回数に上限があるということで、頻繁に書き換えの発生するファイル、UsersとProgramDataを移動させました。
ここでは、通常インストールするとCドライブに作成される
- C:\Users
- C:\ProgramData
の2つのディレクトリをDドライブに移動します。
以前に無人インストール用の定義ファイルunattend.xmlを作成して、ということも試してみたのですが、これがなかなか大変で挫折してしまいました。定義を作るだけなら簡単なのですが、検証が…
というわけでいってみましょう
- まずはWindows7を通常通りにインストール開始します
- 途中に再起動された後、新規ユーザの登録画面が表示されます
- ここでは何も入力せずに、SHIFT+F10を押します
- コマンドプロンプトが表示されますので、コマンドラインにて以下のコマンドを実行します
- コピーが完了したら、Cドライブに残っている2つのフォルダを削除し、Dドライブへコピーしたディレクトリへのジャンクションを作成します(これにより、C:\Usersへアクセスが、自動的にD:\Usersへのアクセスとなります)
- まずはUsers
- 次にProgramData
- 次に、ジャンクションの機能を無視してC:\Usersなどを直撃するアプリのために、システム側の設定も変更します。コマンドラインでregedit.exeを実行します
- regedit.exeとコマンドプロンプトを終了させ、通常通りユーザの追加作業を行います。既に設定が変更されているので、ユーザの資産はすべてDドライブに作成されます
- インストールが完了し使用可能状態となりますが、一旦再起動させた後にログオンし、先ほど削除できなかったフォルダを削除します(コマンドプロンプトを管理者で実行し、7の手順を実行)
- ログオンし、環境変数を確認しましょう
robocopy "C:\Users" "D:\Users" /E /COPYALL /XJ robocopy "C:\ProgramData" "D:\ProgramData" /E /COPYALL /XJ
rmdir "C:\Users" /S /Q mklink /J "C:\Users" "D:\users"
rmdir "C:\ProgramData" /S /Q mklink /J "C:\ProgramData" "D:\ProgramData"
ですが、C:\ProgramDataは使用中なので、ここではこのコマンドは失敗します。
気にせず次の手順へ
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList の以下のキーの値を%SystemDrive%からD:に変更します (既定) REG_SZ 値の設定無し Default REG_EXPAND_SZ D:\Users\Default ProfilesDirectory REG_EXPAND_SZ D:\Users ProgramData REG_EXPAND_SZ D:\ProgramData Public REG_EXPAND_SZ D:\Users\Public
以上です。同様の手順でProgramFilesの移動も可能ですが、そこまでやる必要性はないため、Cドライブに残しておきます。
お好みにより
- 休止状態を使用しない設定にする
- Cドライブのページファイルを最小にする
といった作業をするとよいと思います。
ユーザを作成する前にコマンドプロンプトから操作するところがミソですね。これでデスクトップにファイルを散らかし放題です。
あ、MSDNのドキュメントによると、別ボリュームへの移動は保証外、WindowsUpdateなどが失敗する可能性があるから、テスト目的のみにしてねだそうです。
詳しく解説いただき無事ドライブDに移動する事ができました。
ところが訳あってHDDを交換しなければならなくなりました。
D:\Users 、D:\ProgramData を元のドライブCに変更する方法をご教授いただけないでしょうか?
どうぞ宜しくお願いいたします。
ジャンクションを削除して、実ファイルを書き戻し、レジストリも戻して、という逆の手順になると思いますが、まともに動くとは思えません。く再インストールを行ったほうが早いと思います。お力になれず申し訳ありません。
早々の回答ありがとうございます。ダメ元で試してみます。
詳しい解説ありがとうございます。同じことをしたいと思っていたので助かりました。
UsersとProgramData移動をやってみたんですがUser Profile Service サービスによるログオンの処理に失敗しましたとログオン時に表示されてしまいます。なにか解決方法があったら教えてもらえないでしょうか
OSがDドライブのUsersを見に行けてないエラーだと思いますが、手順やスペルなどに誤りはないでしょうか?
これやってから一度、うっかりDドライブを外して起動してしまったことがあったのですが
見事にバグって、差し直して再起動するも復帰せずでした。
環境未整備だったので再インスコでおkでしたが。レジストリ弄ったりで直るものなのかな?
Dドライブもシステムドライブの一部となることを認識したうえでやった方が良さそうです。
ご注意を。
ユーザーアカウントを作成してから(デスクトップ画面表示状態)でも移動は可能でしょうか?
メーカー製PCのため、初期インストールソフトなどに不具合が出ることがわかりました。なのでこれから自分でインストールするソフトのみDドライブにProgram Dataを移動したいのですが可能ででしょうか?
ここで掲載した方法ではお望みの結果は得られないと思います。
いろいろ検索してみるとアカウント作成後に移動させる方法がありますが
どうも納得のいく方法でなかったので、アカウント作成前に移動する方法をとったという背景があります。
@ken1hg
>どうも納得のいく方法でなかった
非常に同感です。現時点でPogramDataの容量は少なく、書き込み頻度も少ないので様子を見るとことにいたしました。ありがとうございます。