稼働中のWindows 2000/XP/2003を別のHDDにコピーする方法

 ハードディスクをより大容量あるいはより高速なものに交換するなどで、システムを別のハードディスクに移動したい場合、別のOS上からそのドライブのファイルをまるごとコピーするという方法があります。あるいは、Drive Imageなどのツールを使う方法もあります。しかし、Drive Imageなどのツールを持っていない、また別のOSをインストールできない/したくない場合などは、稼働中のOSをコピーできると便利です。
 しかし、稼働中のWindows 2000/XP/2003をコピーしようとしても、ログオン中のユーザーのプロファイルはコピーできません。またレジストリもコピーできませんので、通常の方法ではうまくいきません。ただ、少し工夫をすれば、次の方法で、現在稼働中のシステムをコピーすることができます。
 ここでは、移行元、移行先共にC:ドライブである場合を説明します。C:ドライブ以外の場合も同様な方法でコピーできますが、必ず同じパーティション構成にして、C:ドライブにある起動用のファイルもコピーしてください。

1) ログオン中のユーザープロファイルはコピーできませんので、別のユーザーでログオンして他のユーザープロファイルをコピーするために、ダミーのAdministratorsグループに属するアカウントを作成します。このとき、すべてのユーザープロファイルデータに対するアクセス権がダミーのアカウントにあることを確認します。もしなければアクセス権を与えます。
2) レジストリはそのままではコピーできませんので、レジストリのバックアップを作成してそれをコピーするために、Windows 2000/XP/2003の標準バックアップツールでレジストリのバックアップを作成します。
Windows 2000の場合は「修復ディレクトリのレジストリのバックアップも作成する」にチェックを付けて、「システム修復ディスク」を作成します。これで%systemroot%repair\RegBackフォルダにレジストリのバックアップが作成されます。
Windows XP/2003の場合は「詳細モード」でバックアップを起動します (ウィザードではなく)。次に「バックアップ」タブの「System State」にチェックを付けます。これでバックアップを実行すると、%systemroot%repairフォルダにレジストリのバックアップが作成されます。
3) 移行先HDDをプライマリスレーブとかセカンダリマスターなどに接続し、プライマリパーティション (基本区画) としてフォーマットし、そのパーティションをアクティブにします。
4) ダミーのアカウントでログオンし、[管理ツール] − [サービス] で停止可能なすべてのサービスを停止します。また常駐アプリケーションがあればすべて常駐解除し、すべてのアプリケーションを終了します。次に、コマンドプロンプトで、
xcopy c:\ x:\ /e /c /h /r /o
と入力して、移行元ドライブ (C:) から移行先ドライブ(X:) にコピー可能なファイルをすべてコピーします。
5) 移行元または移行先ドライブの%systemroot%repair\RegBack (または%systemroot%repair) フォルダにある「default」、「sam」、「security」、「software」、「system」の5つのレジストリファイルを、移行先ドライブの%systemroot%system32\configフォルダにコピーします。
6) 移行先のHDDをプライマリマスターなどの優先起動するインタフェースに接続します (移行元のHDDを外すことと、ジャンパーピンの設定も忘れないように)。
7) DOSまたはWindows 9xの起動ディスクで起動して、
FDISK /MBR
を実行します。DOS/Windows 9xがない場合は、6) の前にDiskProbeで署名を消してもOKです (DiskProbeについては「マルチブートのすべて」を参照してください)。
8) これで、移行先のHDDから起動すると、「新しいハードウェアをインストールしました...再起動しますか」というメッセージが表示されますので、再起動すると、移行元と同じ環境でWindowsが起動します。ダミーのアカウントは不要になりますので、削除します。

 4) の手順で、pagefile.sys (スワップファイル) はコピーできませんが、なければWindowsが起動時に作成しますので、問題はありません。また、コピー後に修復セットアップあるいはin-place Upgradeを行なう必要もありません。

 7) の手順の意味について、少し説明しておきます。
 Windows 2000/XP/2003ではHDDを特定するためにディスクの署名を利用しています。HDDに書き込まれたユニークな署名とパーティション番号でドライブ名をレジストリに記録します。したがって、一旦Windowsに認識されたHDDではドライブ名が固定されます。そのため、4) の操作で移行先のドライブ名がx:となっていると、6) でHDDを付け替えてそのまま起動したときに、c:ドライブにならなければならないドライブがx:ドライブとなってしまいます。そして、ログオン先がc:\%sysytemroot%としてレジストリに記録されているため、c:\%systemroot%にログオンしようとして、そのフォルダが見つからないため、ログオンできないという状態になります。
 FDISK /MBRを実行すると、この署名がクリアされます。Windowsは起動時に署名がないHDDが見つかると、そこにユニークな署名を書き込み、ドライブの命名規則に従ってそのHDDにドライブ名を付けます。ただし、6) でHDDを付け替えたときに、移行元のHDDも接続していると、移行元のHDDがc:ドライブとして認識されるため、移行先のドライブがc:ドライブになりません。その場合は、移行先のドライブから起動して、移行元のc:ドライブにログオンするという、非常に奇妙な状態になってしまいますので、必ず移行元のHDDは取り外す必要があります。移行元のHDDが接続されていないならば、移行先のドライブにc:のドライブ名を付けることができ、無事ログオンもできるようになります。
 なお、移行先となるHDDが、3) で接続されるまで一度もそのマシンに接続されたことがない場合は、移行先HDDの署名が、2) でバックアップされるレジストリに記録されていないことになりますので、7) の署名をクリアするという操作は不要になります。