« 2011年07月 | メイン

2011年08月01日

Windows 7のUsersフォルダを移動

Windows 7では、CドライブにUsersフォルダがあり、ここに各ユーザーのマイドキュメントなどのデータが入っている。SSDを使っているCドライブをデータで埋めるのはもったいないので、UsersフォルダをHDDのDドライブに移動することにした。で、思いっきり失敗したので、その内容を忘れないようにまとめておく。

1. ジャンクションリンクの存在

作業する時は全く知らなかったのだが、Windows XPとの互換性を取るため、Usersフォルダの中には大量のシンボリックリンクがある。どのくらい有るかは、MSDNの「アプリケーション開発者向け Microsoft® Windows 7 対応アプリケーションの互換性」を見て欲しい(または、フォルダオプションの表示にて「保護されたオペレーティング システム ファイルを表示しない」を外す)。

これらのシンボリックリンクは、当然のようにエクスプローラではコピーされない(ACLもコピーされない)。おそらく、普通に使っている分には問題ないのだろうが、OS既定のリンクが外れるのはなんとなく心地が悪い。それにWindows XP用のソフトウェアを使う時にエラーがでる可能性が有ると思う(その時はXPモード使えば良いじゃん、という話も有るだろうが)。

エクスプローラがダメなので、コマンドプロンプトのrobocopyやxcopyを試してみたが、やはりシンボリックリンクのコピーはできなかった(ACLについては、オプションをちゃんと選べば大丈夫)。それどころか、robocopyする時、/XJというオプションを付けないと、シンボリックリンクがループしてコピー先が大変なことになる。

こんな感じ
D:¥Users¥test¥AppData¥Local¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥Application Data¥(以下たくさん)

そして、ファイルパス長さ255文字の制限にひっかかって、普通には消せない(涙)

2. レジストリをいじるとバックアップできなくなる

DドライブのUsersフォルダをOSに認識させるため、レジストリの設定を変更する方法が有る。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
Usersフォルダに関する値を「%SystemDrive%」から「D:」に変更

これを使うと、DドライブがWindowsをインストールされたドライブとして認識されてしまう。OS標準のバックアップの保存先をDドライブにしている場合、システムイメージのバックアップができなくなる。保存先のDドライブもバックアップすべきシステムドライブと認識するからだ。

そして、OS標準のバックアップは、CドライブとDドライブ(データ保存用として大容量のHDDを使っている人が多いはずだ)の双方が保存できる容量を要求してくる。Eドライブを積んではいるが、今の環境ではDドライブの容量が一番が大きいから、応えようがない。

その後

というわけで、元に戻して仕切り直すことにした。ただ、既定のシンボリックリンクの存在を知ったのが、CドライブのUsersフォルダを消した後だったので、にっちもさっちもいかなくなった。今、泣きながら、バックアップのシステムディスクイメージからCドライブ全体を復元中。

やってて良かったなあ、バックアップ……。

23:24 | コメント (0) | トラックバック