Windows7でユーザフォルダをシステムドライブ以外に配置する

ユーザフォルダの位置はレジストリで記述されているので、これをいじれば別のパスなりドライブなりに変更できる。
レジストリキーは以下にある。

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

ここのProfilesDirectoryを書きかえれば、ユーザプロファイルディレクトリを変更できる。

ただ、当然行儀の悪いプログラムはいるわけで、プロファイルディレクトリを決めうちしているようなプログラムもある。
そのため、%SystemDrive%Usersから実態へのシンボリックリンクを張るほうが都合がいいだろう。

ということで、ここではC:UsersからD:Usersへプロファイルディレクトリを変更する手順を書く。
たぶんUACはきっておいたほうがやりやすい。

  1. regedit.exeで
    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListProfilesDirectory
    の値を
    %SystemDrive%Users
    から
    D:Users
    に書き換える。
  2. 一時的な管理者アカウントを作成する。(ここではtempユーザとする)
  3. ログオフ
  4. tempユーザでログイン
  5. C:UsersをD:Usersにコピー
  6. C:Usersを削除
  7. 管理者権限でコマンドプロンプトを起動して、以下のコマンドを入力
    mklink /D C:Users D:Users
  8. regedit.exeで
    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListProfilesDirectory
    の値を
    %SystemDrive%Users
    に戻す
  9. ログアウト
  10. 元のユーザでログイン
  11. tempユーザを削除

以上でユーザディレクトリの実態はD:Usersへ配置され、C:UsersはD:Usersへのシンボリックリンクとなる。

一時ユーザを使わずにいけないか試してみたけど、レスキューモードレベルじゃだめだった。
ユーザフォルダ以下の特定ファイルがシステムからオープンされていてコピーできない。
Windowsのインストールディスクからコマンドラインを実行すれば、もしかしたらxcopyあたりでコピーできるかもしれない。
けどインストールディスクの起動時間結構遅いし、それなら一時ユーザ作ってやっちゃえ、ということになった。

ちなみにmklinkでシンボリックリンクじゃなくて/Jを使ってジャンクションを作っても別に問題はないはず。
Linuxユーザにとってはジャンクションなんて中途半端で気持ち悪いとおもうんだけど。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>