ユーザフォルダの位置はレジストリで記述されているので、これをいじれば別のパスなりドライブなりに変更できる。
レジストリキーは以下にある。
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
ここのProfilesDirectoryを書きかえれば、ユーザプロファイルディレクトリを変更できる。
ただ、当然行儀の悪いプログラムはいるわけで、プロファイルディレクトリを決めうちしているようなプログラムもある。
そのため、%SystemDrive%Usersから実態へのシンボリックリンクを張るほうが都合がいいだろう。
ということで、ここではC:UsersからD:Usersへプロファイルディレクトリを変更する手順を書く。
たぶんUACはきっておいたほうがやりやすい。
- regedit.exeで
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListProfilesDirectory
の値を
%SystemDrive%Users
から
D:Users
に書き換える。 - 一時的な管理者アカウントを作成する。(ここではtempユーザとする)
- ログオフ
- tempユーザでログイン
- C:UsersをD:Usersにコピー
- C:Usersを削除
- 管理者権限でコマンドプロンプトを起動して、以下のコマンドを入力
mklink /D C:Users D:Users - regedit.exeで
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListProfilesDirectory
の値を
%SystemDrive%Users
に戻す - ログアウト
- 元のユーザでログイン
- tempユーザを削除
以上でユーザディレクトリの実態はD:Usersへ配置され、C:UsersはD:Usersへのシンボリックリンクとなる。
一時ユーザを使わずにいけないか試してみたけど、レスキューモードレベルじゃだめだった。
ユーザフォルダ以下の特定ファイルがシステムからオープンされていてコピーできない。
Windowsのインストールディスクからコマンドラインを実行すれば、もしかしたらxcopyあたりでコピーできるかもしれない。
けどインストールディスクの起動時間結構遅いし、それなら一時ユーザ作ってやっちゃえ、ということになった。
ちなみにmklinkでシンボリックリンクじゃなくて/Jを使ってジャンクションを作っても別に問題はないはず。
Linuxユーザにとってはジャンクションなんて中途半端で気持ち悪いとおもうんだけど。