Windows7 の Program Files とか、ProgramData を別ドライブに置く。

メモ    0 
2017/0529

このメモは、Windows7 の新規インストール時に、 Program Files とか、ProgramData を別ドライブに置くための方法のメモです。
すでに運用中の環境での方法を探している方は、ここの情報は役に立たない可能性があります。

0.前提
   Windows7 の新規インストール時に、
   Program Files、Program Files (x86)、ProgramData、Users の各フォルダを、
   別ドライブへ配置する。今回は以下の感じ。

     system ->(SSD 1)
     Program Files、Program Files (x86) ->(SSD 2)
     ProgramData、Users ->(HDD)

1.Windows7 をインスコ開始
   一度再起動を挟んで、最終処理のユーザーアカウントを作るところまで進んだら、
   アカウントを作らず、以下の作業に入る。

2.コマンドプロンプト起動
   shift + fn10 を押して、コマンドプロンプトを起動。

3.Administrator を有効に
   最後にc:に残ったフォルダ処理をすんなり行うために、Administrator を有効にしておく。
   コマンドプロンプトで、

    net user administrator /active:yes

4.ドライブレター付け替え
   ドライブレターは意図した通りに並んでないことが多いので、diskpart を使って付け替える。
   今回は、以下のように変えた。

     system -> C: (SSD 1)
     Program Files、Program Files (x86) -> D: (SSD 2)
     ProgramData、Users -> E: (HDD)

   diskpart の使い方はググれ。

5.移動先へフォルダをコピー
   非表示のものや権限などを含め、ごっそりとコピーする。

     robocopy “C:¥Program Files” “D:¥Program Files” /E /COPYALL /XJ /B /R:1 /W:1
     robocopy “C:¥Program Files (x86)” “D:¥Program Files (x86)” /E /COPYALL /XJ /B /R:1 /W:1
     robocopy “C:¥ProgramData” “E:¥ProgramData” /E /COPYALL /XJ /B /R:1 /W:1
     robocopy “C:¥Users” “E:¥Users” /E /COPYALL /XJ /B /R:1 /W:1

   ProgramData のコピー時にはいくつかエラー出るけどどんまい。
   インスコ終了後、そのへんは処理する。

6.ジャンクションの設定
   コピー元(c:)から移動先(d:、e:)へ、当該フォルダのジャンクションを作る。
   まずフォルダ削除。隠れてるのとかもごっそりと。
   ProgramDataではエラー出るかもだけどどんまい。あとでやっつける。

     rmdir “C:¥Program Files” /S /Q
     rmdir “C:¥Program Files (x86)” /S /Q
     rmdir “C:¥ProgramData” /S /Q
     rmdir “C:¥Users” /S /Q

   続いてジャンクション作成。
   ProgramDataではエラー出るかもだけどどんまい。あとでやっつける。

     mklink /j “C:¥Program Files” “D:¥Program Files”
     mklink /j “C:¥Program Files (x86)” “D:¥Program Files (x86)”
     mklink /j “C:¥ProgramData” “E:¥ProgramData”
     mklink /j “C:¥User” “E:¥User”

7.レジストリの書き換え
   環境変数のパスとか、アプリケーションのインスコ時とかに、
   レジストリ中に書かれた値を参照するので、変更してやる。

   HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion
     C:¥Program Files、C:¥Program Files(x86) を
     D:¥Program Files、D:¥Program Files(x86) に書き換える。

   HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432Node¥Microsoft¥Windows¥CurrentVersion
     C:¥Program Files、C:¥Program Files(x86) を
     D:¥Program Files、D:¥Program Files(x86) に書き換える。

   HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥WindowsNT¥CurrentVersion¥ProfileList
     C:¥ProgramData、C:¥Users を
     E:¥ProgramData、E:¥Users に書き換える。
     

8.インスコを完了させる
   コマンドプロンプトを終了し、
   Windows7のインスコの残りの作業(=ユーザー定義など)を済ませる。

9.再起動したら、Administrator でログイン
   インスコ終了し、再起動したら、Administratorでログイン。

10.ProgramData の後処理
   6の工程で、ProgramData 周りではエラー出てるはずなんで、追加処理してやる。
   コマンドプロンプトを管理者権限で開き(いや管理者権限必要ないかもだけど)、

     rmdir “C:¥ProgramData” /S /Q
     mklink /j “C:¥ProgramData” “E:¥ProgramData”

11.当該フォルダが、全てジャンクション化してるか確認
   コマンドプロンプトで、c:¥ へ移動後、以下で確認する。

     dir /a

   あとは再起動とかして気分新たにドゾ。

終わり。■

ken-dan

コメント、お願いします。