Una vez construido, lo insertamos e iniciamos el equipo con la placa base ya cambiada. Tardará unos minutos en arrancar y preguntará si deseamos iniciar la compatibilidad de red. Respondemos No pues no la necesitamos para este procedimiento. Pulsamos el botón Go, escogemos Command Prompt y en la consola de comandos CMD tecleamos el siguiente comando:
reg load HKLM\TEMP c:\windows\system32\config\system
Tras este comando, que cargará en el editor de registro la rama SYSTEM de la instalación de Windows, escribimos en la misma consola de comandos el comando regedit e importamos el archivo .reg de antes (el contenido de dicho archivo está al final de este tema, justo encima de la captura con la prueba de Windows iniciado tras el cambio de controladora, sólo es necesario copiar y pegarlo en un editor de texto plano, para guardarlo como .reg). Navegamos a la rama HKLM\TEMP\Select y observamos el valor de la entrada Default. Si es 001 podremos continuar, si no es necesario editar el archivo .reg de antes y usar la función Reemplazar del bloc de notas, en Buscar ponemos \TEMP\ControlSet001\ y en Reemplazar por \TEMP\ControlSet002\ \TEMP\ControlSet003\ o lo que fuera según el valor de la entrada Default de antes.
Luego, nos desplazamos a la rama HKLM\TEMP y en archivo escogemos Descargar subárbol o ejecutamos el comando reg unload HKLM\Temp
Con esto Windows XP/Server 2003 debería poder iniciar desde un disco conectado a cualquier controladora IDE/SATA a la que se pueda acceder con el controlador estándar PCI IDE pciide.sys.
Si en cambio, tenemos el disco conectado a una controladora SCSI/SAS, esté admitida por Windows o no de modo nativo, o a una RAID/SATA deberemos usar la utilidad MSDINST.EXE para instalar el controlador en una instalación de Windows no iniciada. Lo primero es determinar si el controlador viene de serie o no en Windows.
Si no viene de serie, debemos crear una carpeta en la unidad de disco duro, como pudiera ser c:\WINDOWS\RAIDDRIVER, en la que copiaremos todos los archivos del controlador de la controladora en cuestión, los inf, los sys, los cat...
Luego, ejecutamos el comando reg load HKLM\TEMP c:\windows\system32\config\software y ejecutamos regedit.exe. Dentro de la rama HKLM\Temp\Microsoft\Windows\CurrentVersion buscamos el valor DevicePath y lo editamos.
Lo más probable es que venga de serie el valor %SystemRoot%\inf, introducimos el nombre de la carpeta donde copiamos los archivos del controlador separándolo con un punto y coma, tal que quede así %SystemRoot%\inf;c:\WINDOWS\RAIDDRIVER.
Podemos añadir más rutas separándolas con punto y coma, de tal modo que Windows considerará esas carpetas como origen de instalación de controladores, tomando de ahí los controladores sin que tengamos que instalarlos manualmente.

Una vez hecho esto, descargamos la rama HKLM\TEMP como antes. Ahora necesitamos copiar la utilidad MSDINST.EXE a la unidad B:, la unidad de disco RAM que crea BartPE. Posteriormente, ejecutamos el bloc de notas notepad.exe y guardamos un archivo como "b:\sysprep.inf", las comillas deben escribirse.
En dicho archivo, escribimos:
[SysprepMassStorage]
ID PnP = Ruta al inf
Reemplazando ID PnP = Ruta al inf por los datos reales. La ID PnP de la controladora la podemos averiguar ejecutando el SIW en BartPE, apartado Hardware, PCI y pulsando sobre el dispositivo que parezca ser nuestra controladora. Nos interesa el valor del fabricante (Vendor) y el de dispositivo (Device). En nuestro ejemplo, ponemos el de una controladora SATA RAID del ICH7R de Intel. El código de fabricante es 8086 y el de dispositivo 27C3. En ruta al inf sólo tenemos que teclear la ruta absoluta al archivo inf del controlador que copiamos antes, si la ruta contiene algún espacio es necesario encerrarla con comillas. El archivo inf del ejemplo se llama iastor.inf y lo copiamos en c:\WINDOWS\RAIDRIVER. En caso de que queramos añadir compatibilidad con alguna controladora IDE o SCSI admitida de serie por Windows, lo más probable es que se instale mediante los archivos mshdc.inf, pnpscsi.inf y scsi.inf, dentro de la carpeta \WINDOWS\inf.
Quedaría así:
[SysprepMassStorage]
pci\ven_8086&dev_27C3 = c:\WINDOWS\RAIDDRIVER\iastor.inf
Si, como ejemplo, además quisieramos añadir compatibilidad para una controladora SCSI Tekram DC-390U3W, que viene de serie admitida en Windows XP, añadimos (se supone que la tenemos insertada en una ranura PCI y que hemos comprobado su ID PNP con SIW):
PCI\VEN_1000&DEV_0020 = c:\WINDOWS\inf\pnpscsi.inf


Una vez hecho todo esto, sólo debemos ir a una consola de comandos, cambiar a la unidad b: con b: y ejecutar:
msdinst sysprep.inf c:\windows
Debería mostrar un mensaje de operación completada con éxito:
Success! Image has been updated.

En caso de que la herramienta MSDINST.EXE no funcione o no tengamos acceso a esta herramienta, será necesario configurar a mano el servicio y la entrada en la base de datos de dispositivos críticos, para ello seguimos estos pasos:
Creamos una carpeta en la unidad local con los controladores correspondientes y cambiamos el valor DevicePath como se describió antes. Luego copiamos el archivo de controlador .sys a la carpeta \WINDOWS\System32\Drivers.
Ahora, cargamos en el registro el archivo de registro SYSTEM y nos desplazamos a la clave ControlSetxxx reflejada en el valor Default, tal como vimos antes. Dentro de ésta, vamos a service y creamos una clave con el mismo nombre que el controlador, pero sin .sys, como ejemplo iastor. Dentro de ésta creamos las siguientes entradas:
Una DWORD llamada Start, con valor 0, controlador que debe cargar el cargador NTLDR.
Otra DWORD llamada Type, con valor 1, controlador de núcleo.
Una alfanumérica llamada ImagePath, de valor system32\drivers\[controlador.sys] cambiando [controlador.sys] por el nombre del controlador.
Otra alfanumérica llamada Group, con valor SCSI miniport si la controladora aparece enumerada en la sección de Controladoras SCSI/RAID del administrador de dispositivos de Windows o System Bus Extender si es una controladora IDE/SATA a la que se puede acceder con el controlador estándar pciide. En caso de duda, podemos mirar la clase de dispositivo con el SIW (es una de las imágenes de arriba). Lo seleccionamos en Hardware\PCI y nos fijamos en el valor PCI Class Type, si es 101xxh le corresponde System Bus Extender, si es otro como 010000h (controladora SCSI), 010400h (controladora RAID), 010602h (controladora SATA con AHCI), 010700h (controladora SAS) o 018000h (dispositivo de almacenamiento masivo) le corresponde SCSI miniport.
Ahora toca configurar la entrada de la base de datos de dispositivos críticas, en la rama \Control\CriticalDeviceDatabase. Hay que crear una rama con nombre pci#ven_xxxx&dev_yyyy, donde xxxx es la ID del fabricante e yyyy la del dispositivo. Se pueden consultar con SIW como vimos anteriormente. Luego, dentro de ésta hay que crear dos entradas alfanuméricas:
ClassGUID: El identificador universal global de la clase de dispositivos, {4D36E97B-E325-11CE-BFC1-08002BE10318} si el dispositivo es una controladora SCSI/RAID o de almacenamiento masivo y {4D36E96A-E325-11CE-BFC1-08002BE10318} si es una controladora IDE/SATA a la que se puede acceder con el controlador estándar pciide, en función del valor de clase PCI según detallamos antes.
Service: El nombre del controlador asociado, igual al nombre del controlador sin la extensión.

