We help IT Professionals succeed at work.

How to manually load HDD controller (SATA or IDE) drivers into Windows 7

TarasShumylo asked
I want to make physical to virtual conversion by hands.

How can I manually load IDE or SATA drivers into Windows 7?

Is there recovery console?

Is there such option in ERD commander?

What are detailed steps to do it?

Thank you for your answers and help!
Watch Question

Hi Taras, can you give a bit more information into what it is you are trying to do, it may make it easier for us to help.



I have done image from physical computer (with the help of Ghost).
Then I applied this image to virtual HDD.
Then I fix boot with the help of -start up recovery- option of installation disk of Windows 7 professional.
Windows start booting but then crashes with error "0x0000007b"
So I want to load drivers of virtual IDE controller with help of Windows recovery console or ERD commander.
help me please with the steps that I need to do to manually load it with recovery console or ERD commander.
I do not want to make Windows reinstallation (repair) with help of installation disk (it will destroy some bugs that I want to keep unattached).
I do not want to make physical to virtual conversion with help of automatic utilities (don't ask why, it is long to explain)
I just want to preload necessary drivers with the help of recovery console or ERD commander. (like it was in Windows XP)

I would recommend sysprep'ing the image before using ghost. This will strip out the hardware ID's from the image, which i think is the problem, not that it needs extra drivers. After doing this ghost it to the virtual drive and after load it should work.


But what to do if there is no source computer anymore. Or if you want to restore Virtual machine, that is archived 2 years ago on different hardware?

I need to do it on Offline system without automatic utilities, as it was in Windows XP

Here is an article about about to manually load a HDD device driver during a recovery...  you might find it handy


graye are you sure that this procedure adds drivers to offline operating system - not to ERD console. I do not have correct drivers for VMWare SCSI hard disk. May be I can export it from another system, but I am not sure what to export. That's why I first I ask you  (before researching what drivers to export) - are you sure that this procedure adds drivers to offline system, not to ERD commander?

I also found this article http://support.microsoft.com/kb/922976
But HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci and HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IastorV are already set to 0.

I really cannot believe that it is impossible to load drivers to offline system.
That's a good question....   No, I'm not 100% sure.
I know you have some significant restrictions on how to proceed, but I'd still recommend that you do a "repair install on top of" the existing OS.


Does somebody knows what exactly occurs during SATA or SCSI driver installation.

The files are copied from distributive?
Appropriate permissions on files are applied?
Some registry keys are created?
Appropriate permissions on registry keys are applied?

What else?
Is there some modification or interaction with windows core components, that are accessible only programmatically?
On Windows 7 IDE and SATA drivers are already in the system.

However SATA drivers are disabled (for better system performance and faster start up).
To enable it read http://support.microsoft.com/kb/922976

If you need load drover manually (may be some driver is not included) you can use solution from http://www.boot-land.net/forums/index.php?showtopic=11729 (from karyonix))

To boot Windows in hard disk connected to new SATA controller, you need ...

   1. The driver file (.sys file) in "Windows\system32\drivers" directory.
   2. Registry key ControlSetxxx\services\<service name> in target's system hive
      (xxx is default ControlSet number, the number in "Default" value in "Select" key, usually "001")
      You can find service name in .inf file (in AddService line) and txtsetup.oem in driver package.
      and these values
          * "DisplayName" type=REG_SZ data=<driver display name> . You can get display name from .inf file.
          * "ErrorControl" type=REG_DWORD data=1 .
          * "Group" type=REG_SZ data="SCSI miniport" .
          * "ImagePath" type=REG_EXPAND_SZ data="system32\DRIVERS\<driver file name.sys>" .
          * "Start" type=REG_DWORD data=0 .
          * "Type" type=REG_DWORD data=1 .
   3. Registry key ControlSetxxx\Control\CriticalDeviceDataBase\<hardware ID or compatible ID> in target's system hive
      You can find hardware ID and compatible ID in .inf file and txtsetup.oem .
      Replace backslash \ with number sign # when you convert ID to registry key name.
      If you need multiple IDs, create a separate key for each ID.
      These 2 values should be present in this key.
          * "ClassGUID" type=REG_SZ data=<Class GUID>. You can find it in [Version] section of .inf file.
          * "Service" type=REG_SZ data=<service name> . The name of service registry key