Windowsのユーザフォルダをシステムと別のドライブにする

デフォルトでは,WindowsのシステムはCドライブにインストールされます.そしてユーザフォルダも同じくCドライブに作られます.そのユーザフォルダをシステムとは別のドライブに移したときの手順を紹介します.

(※Windows10ですが,2年前の話です.今はこの方法が使えなかったり,別の簡単な方法が用意されているかもしれません.)

(追記:バージョン1903でもこの方法でできました.)

特にSSD+HDDのような構成をしている場合は,システムをSSDドライブに,ユーザフォルダをHDDドライブにマウントされるとうれしいと思います(容量の分離とか,システム更新時のユーザデータ保全の観点から).きっと多くの人に賛同して頂けると思うのですが,その手順については簡単な方法は用意されていないと思います.

※[ドキュメント]や[ピクチャ]などを移動するのは,比較的簡単に行えます(当該フォルダのプロパティの[場所]タブを開いてみましょう).(日本語で)ちょっとWeb検索してヒットするのは,こちらの手順がほとんどです.しかし,たとえば最も厄介なAppDataは,その方法では移動することはできません.

注意

以下の操作には,データの消失などの危険をともないます.できれば新規インストール等の直後に行うことを推奨します.

手順

英語サイトになりますが,Windows 10 TutorialsのMove Users Folder Location in Windows 10を参考にしました.英文に抵抗のない方は,そちらを参照頂いた方がいいでしょう.そうでない方のために,その概略を日本語で記述しておきます.

  1. まずは,移動先のドライブとディレクトリ名を決めておきます.私の場合は,”D:\Users”にしました.
  2. 続いて,アンサーファイルを作成します(内容は後述).アンサーファイルというのは,無人インストールを実現するために,インストーラに対する応答をあらかじめ記述しておくもの,ぐらいの意味だと思いました(浅い理解).ファイル名や場所はどこでもいいと思います.私の場合は,移動先のドライブのルートに,D:\relocate.xmlというファイルを作りました.
  3. WMP Network Sharing Serviceを停止しておきます.管理者権限のコマンドプロンプトから,net stop wmpnetworksvcを実行するといいでしょう.
  4. sysprepコマンドを起動します.同じく管理者権限のコマンドプロンプトから,%windir%\System32\sysprep\sysprep.exe /oobe /reboot /unattend:D:\relocate.xmlを実行します./unattendオプションには,2番の手順で保存したファイルをフルパスで指定します.
  5. 相当の時間が経過した後に(ユーザフォルダにあるファイルを全て新しいユーザフォルダに移動するので数時間単位の時間を要します)システムが再起動して,初期セットアップのような画面が出てきます.以下の点に注意して進めるといいでしょう.
    • プロダクトキーの入力を求められる場合がありますが,入力せずにSkipしても大丈夫です.
    • これまでのユーザアカウントは全て残っていますが,新規アカウントを作るように要求されます.とりあえずのローカルなアカウントを作っておいて,不要なら後で削除しましょう.
  6. これで、ユーザフォルダ(の実体)が移動しているはずです。従来のユーザフォルダだった場所は普通のディレクトリ扱いになって,データはもとのまま残っていると思います.必要に応じてこれらを新しいユーザフォルダに移します(通常のファイル操作になります)にあったファイルは新しいユーザフォルダに移動されています

2番の手順で作成するアンサーファイルは,次のような内容になります.

<?xml version="1.0"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup"
               processorArchitecture="amd64"
               publicKeyToken="31bf3856ad364e35"
               language="neutral" versionScope="nonSxS"
               xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <FolderLocations>
        <ProfilesDirectory>D:\Users</ProfilesDirectory>
      </FolderLocations>
    </component>
  </settings>
</unattend>

ProfilesDirectory要素の値には,1番で決めたディレクトリ名を入れます.また32ビット版Windowsを使う場合は,processorArchitecture属性の値をx86にします.スペルミスなどないように注意しましょう.ここのコードも自信がないので,前述の英語サイトからコピーすることを推奨します.

余談

この設定を行う前に,ユーザフォルダに使うHDDは記憶域プールにしておけばよかったかな,と思います.物理的なドライブとは別に,論理的なドライブを構成して,冗長性をもたせることができる機能です.1台で使う場合にも,ドライブ交換の作業が簡単になるような気がします(記憶域に2台目を追加して,1台目に対して[削除の準備]を実行することで,1台目のデータを2台目のデータに移すことができるようです;未確認).

(2020-06-18追記:Windowsを以前のビルドに戻すと、「User Profile Serviceによるサインインの処理に失敗しました」のようなメッセージが出て、サインインできなくなりました。確証はありませんが、ユーザフォルダをシステムと別のドライブにしたためである可能性があります。そのPCはどうにも復旧できず、クリーンインストールを余儀なくされました。)