壊れて動かなくなったPCから取り出したハードディスクを別端末に移植する方法

 
 前提として、

  • 旧マシンでは起動しなくなった
  • 旧マシンでWindows2000/XPを使用していた
  • 新マシンは(単体で)Windows2000/XPを動作させられる
  • 単純に旧マシンのHDDを新マシンに差し替えただけでは、「Stop 0x0000007B」エラーでブルースクリーンする

 とします。他のサイトやblog等では、旧マシン上で準備をしてから新マシンに移植する方法は書いてありますが、もともとのパソコンが壊れてから後に新しいものを入手した場合の移植方法は書いてありませんでしたので、何かの役に立つかと思ってメモしておきます。
 Stop 0x0000007Bエラーの原因は、新旧でマザーボードチップセットIDEコントローラが違うため、Windowsがロード中に最適なドライバを見つけられなくなって、「システムドライブにアクセスできません。よってシボンヌ」とばかりに青ざめていることが原因です。なので、解決策として、Windowsが本来知っているはずの(ネイティブ対応しているはずの)IDEコントローラについて、あらかじめレジストリにリストアップしておくことで、とりあえず新しい環境でも(追加ドライバなどが必要な特殊環境でなければたいてい)起動できるようになる、という対応を行います。
 

準備

 
 古い環境からハードディスクを取り出しておきます。移植したい周辺機器やビデオカードなど、使えそうなものも抜いておくとよいでしょう。私の場合はメモリしかありませんでしたが。
 抜いたハードディスクを新環境に外付けで接続できるように、3.5inchHDD対応のハードディスクケースや、「裸族の〜〜」といったケースとIDE/USB変換ケーブルなどを購入しておきます。これらは、新環境のHDDを外付けとして再利用するときにも使えますので、捨て機材にはなりません。
 新PCの本来の環境でWindowsを起動できるようにしておきましょう。旧マシンのHDDではなく、新マシンを買ったときのもので動作させます。旧HDD上のWindowsが、新マシンのハードウェアを認識できるようにするために、新マシンのWindowsが必要になります。なお、管理者権限が必要になるかもしれません*1ので、アドミンでログオンしときましょう。
 
 それから、新マシンのハードウェアのドライバも揃えておきます。旧マシンのHDDから起動したとき、新マシンのハードウェアデバイスを認識させなおす必要があります。
 

作業1 旧環境のレジストリをいじる準備

 
 旧マシンのHDDを外付けにセットして、新マシンでブートします。新マシンにログオンしたら、外付けとして認識している旧マシンのHDDが読めることを確認してください。
 
 新マシンでレジストリエディタを起動します。スタートメニューから「ファイル名を指定して実行」あたりで「Regedit」と入力すればおkです。ここから先は失敗するとすべてオシャカになる可能性がありますので注意してください。
 
 新マシンのレジストリエディタ上で、「HKEY_LOCAL_MACHINE」をハイライトします。この状態で、「ファイル」メニューから「ハイブの読み込み」を選択して、旧マシン環境のレジストリファイルを読み込ませます。
 旧マシンのHDDが「Z」ドライブだと仮定して進めます。いじらなければならない旧環境のレジストリ範囲は、「C:\WINDOWS\system32\config\SYSTEM」にあるファイル*2ですので、外付けのドライブレターに読み替えて「Z:\WINDOWS\system32\config\SYSTEM」を選択します。
 このとき、マウントするキー名を求められますので、わかりやすい名前をつけましょう。ここでは「OLD_SYS」とでもしておきます。
 すると、デジストリエディタのHKEY_LOCAL_MACHINE以下にOLD_SYSキーが作られ、さらにその下に、旧環境の「HKEY_LOCAL_MACHINE\SYSTEM」以下のキーが読み込まれます。これで、旧環境のレジストリを新マシンから編集することができるようになりました。
 

作業2 レジストリに書き込む

 
 旧環境上のレジストリを編集できるようになったことで、他のサイト等で紹介されているマザーボード交換のノウハウが適用できるようになりました。
 ただし、事前準備ではなく、事後対応になりますので、レジストリの書き込み先を間違えないようにしなければなりません。
 
 まず、書き込み先は現在のシステムではないので、先ほどマウントした「OLD_SYS」以下への書き込みになるようにしなければなりません。また、動作していない状態のレジストリへの書き込みなので、「眠っている状態でのレジストリ位置」への書き込みが必要です。
 あっさり答えを書いてしまうと、ここから先は「(MS)Windows XP のシステム ディスクを他のコンピュータに移動した後に STOP 0x0000007B エラーが表示される」の手順になりますが、紹介されているままの手順でregファイルを作ると現在の環境に書き込まれてしまいますので、あらかじめテキストファイルでregファイルを作る際に、レジストリキーを指定している部分のうち「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet」までの部分が旧環境を指すように置換してやらなければなりません。
 具体的には今回の場合、「HKEY_LOCAL_MACHINE\OLD_SYS\ControlSet001」に置換しました。SYSTEM が OLD_SYS になったのは、旧環境のレジストリをマウントした先を指すためです。で、「CurrentControlSet」が「ControlSet001」になったのは、「OLD_SYS」以下に「CurrentControlSet」がない*3ので、デフォルトで読み込まれるものを指定しました。
 このようにして作ったregファイルを、レジストリエディタを開いたままの状態でダブルクリックして取り込みます。レジストリエディタを閉じてしまうとアンマウントされてしまってうまくregファイルで書き込めなかった気がしますが確認してません。
 
 念のため、regファイルで示されている内容が正しく書き込まれているか確認しておきましょう。わかんなかったらスルーでいいです。
 
 最後に、レジストリエディタで「HKEY_LOCAL_MACHINE\OLD_SYS」をハイライトして、ファイルメニューから「ハイブのアンロード」を行い、レジストリエディタを終了します。
 Windowsをシャットダウンして、HDDを差し替えましょう。
 

作業3 起動

 
 さて、ブートできたでしょうか。レジストリにうまく書き込めていれば、とりあえずのブートまではできると思います。
 あとは新マシンのハードウェアが続々と見つかるはずですので、それぞれのドライバをインストールしていきましょう。
 

コツ

 
 旧マシンのHDDを外付けHDDとしてつないで、新マシンのWindowsからレジストリエディタで旧マシンのレジストリをいじる。
 マザーボードチップセットの違いを乗り越えて起動できるだけの情報をレジストリに与える。(プラグアンドプレイで認識できる範囲で、Windowsがネイティブ対応しているもの)
 あらかじめ、新マシンのハードウェアデバイスのドライバを準備しておく。
 必要に応じて、旧マシンから移植する他のハードウェアのドライバも準備しておく。
 新マシンから抜いたハードディスクは、外付けとして使う。または、予備としておいておく。
 Windowsのライセンスに注意。旧マシンのOEMだった場合、ライセンス上ややこしいことになるかもしれない。
 
 転んでも泣かない。
 

参考サイト

 
 「Windows再インストールなしにマザーボード交換」 http://dennou.stakasaki.net/noinst_mbchange-j.html
 「いとまさのページ ハードディスクを新しいパソコンに移動したら Stop 0x0000007B が出た!」 http://hp.vector.co.jp/authors/VA022581/0x0000007b.html
 「WindowsXPのシステムディスクを他のコンピュータに移動した後に STOP 0x0000007B エラーが表示される」 http://support.microsoft.com/default.aspx?scid=kb;ja;JP314082
 「Semplice:Windowsレジストリ(Registry)におけるハイブ構造とSID」 http://blog.lucanian.net/archives/50581962.html
 「XPレジストリ虎の巻:基礎」 http://blog.livedoor.jp/tricube/archives/cat_859789.html
 

付記

 
 「(MS)Windows XP のシステム ディスクを他のコンピュータに移動した後に STOP 0x0000007B エラーが表示される」が移転したり移動したりしたときのために,作成する.regファイルの内容を引用。
 


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\secondary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*pnp0600]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*azt0502]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\gendisk]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#cc_0101]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_0e11&dev_ae33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_0601]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_5513]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1042&dev_1000]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_105a&dev_4d33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0640]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_05]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_07]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0648]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0649]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1097&dev_0038]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0001]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0150]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5215]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5219]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5229]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1106&dev_0571]
"Service"="pciide"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1222]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1230]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2411]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2421]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7199]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
;Add driver for Atapi (requires Atapi.sys in Drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi]
"ErrorControl"=dword:00000001
"Group"="SCSI miniport"
"Start"=dword:00000000
"Tag"=dword:00000019
"Type"=dword:00000001
"DisplayName"="Standard IDE/ESDI Hard Disk Controller"
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,61,00,74,00,61,00,70,00,69,00,2e,\
00,73,00,79,00,73,00,00,00
;Add driver for intelide (requires intelide.sys in drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6e,00,74,00,65,00,6c,00,69,\
00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00
;Add driver for Pciide (requires Pciide.sys and Pciidex.sys in Drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PCIIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000003
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,70,00,63,00,69,00,69,00,64,00,65,\
00,2e,00,73,00,79,00,73,00,00,00
 

*1:未確認。何気にAdministratorで作業しちゃったもんで・・・

*2:WindowsXPの場合。2000だとC:\WINNT\system32\config\SYSTEM

*3:眠っているシステムのレジストリでは、「現在のコントロールセット」は存在しないーー起動してないから