Omitir el "Asistente para hardware nuevo encontrado" / Configurar Windows para instalar controladores automáticamente

9

Mi placa base finalmente murió después de la mayor parte de una década, así que compré un sistema usado. Puse mi viejo disco duro y tarjeta de sonido en el nuevo sistema, y ​​conecté mi viejo teclado y mouse (el resto de los componentes (CPU, RAM, mobo, tarjeta de video) son del nuevo sistema).

Sabía de antemano que sería un desafío hacer que Windows arranque e instale controladores para el nuevo hardware (particularmente porque los componentes básicos son nuevos), pero no puedo ni siquiera intentar completar el trabajo de instalar controladores para cosas como la tarjeta de video debido a que el teclado y el ratón no funcionará (que hacen el trabajo, en la pantalla del BIOS, en modo DOS, en Windows 7, en el menú de arranque de XP, etc., pero no en el propio Windows XP).

Cada vez que trato de arrancar XP (en modo normal o seguro), aparece un montón de globos emergentes para todo el hardware nuevo detectado, y un Asistente para hardware nuevo encontrado para el procesador (obviamente tiene que instalar controladores para los componentes de nivel más bajo) en adelante). Desafortunadamente, no puedo hacer clic en Siguiente ya que el teclado y el mouse no funcionarán porque los controladores de la placa base (para los puertos PS / 2 o USB) aún no están instalados. Incluso probé un mouse serie, pero fue en vano; de nuevo, funciona en DOS, 7, etc., pero no en XP porque no tiene instalado el controlador del puerto serie.

Traté de montar las colmenas SOFTWARE y SYSTEM en Windows 7 para configurar manualmente la "advertencia de controladores no firmados" para ignorar (usando las dos configuraciones de política de firma de controladores a las que encontré referencias). Eso no funcionó; Todavía consigo al mago.

Ni siquiera son controladores sofisticados, propietarios, de terceros o sin firmar. Son controladores que vienen con Windows, como suelen ser los controladores para CPU, RAM, controlador IDE, etc. Y los controladores de teclado y mouse son genéricos (pero como dije, son irrelevantes ya que los controladores para los puertos a los que están conectados aún no están instalados).

Obviamente, en algún momento durante los últimos años, se modificó una configuración para que Windows siempre me avise cuando detecta nuevo hardware. (También se configuró para mostrar el Rastreador de eventos de apagado en apagados anormales, por lo que tuve que desactivarlo para poder ver el escritorio).

Ah, e intenté eliminar todos los archivos PNF para que se regeneren, pero eso tampoco ayudó.

¿Alguien sabe cómo puedo restablecer Windows para al menos intentar instalar automáticamente los controladores para el nuevo hardware antes de preguntarme si falla? Por el contrario, ¿alguien sabe cómo exactamente uno apaga la instalación automática del controlador (y avisa al asistente)?

Muchas gracias.


Solo para que quede claro, ya que es probable que aparezca en las respuestas, de lo contrario, NO estoy hablando del diálogo a continuación, estoy hablando del siguiente.

texto alternativo

texto alternativo


Ah, y para evitar cualquier sugerencia del siguiente tipo antes de que suceda , usar el Administrador de dispositivos para deshabilitar, desinstalar, reparar, etc. cualquier dispositivo está fuera de discusión porque si el teclado y el mouse (o cualquier otro dispositivo de entrada) no están ' t instalado / funcionando, entonces, ¿cómo realizaría exactamente cualquier acción como usar el Administrador de dispositivos?

Synetech
fuente

Respuestas:

10

¡Finalmente conseguí que Windows XP funcionara en mi nuevo sistema antiguo el viernes! Woohoo! (Solo tomó 5½ meses).

Expondría los pasos específicos necesarios para solucionarlo en caso de que alguien más encuentre un problema similar, aunque desafortunadamente, debido a la creciente frustración e impaciencia, terminé adoptando un enfoque de tierra algo chamuscada y realicé varios pasos a la vez. Sin embargo, conservé los archivos de trabajo que utilicé y descubrí los cambios que hice, por lo que enumeraré varias cosas para intentarlo que, al menos, deberían ayudar.

(Obviamente, esto es algo avanzado para usuarios avanzados; aunque incluso los usuarios avanzados pueden estropear esto bastante mal, de ahí el paso de copia de seguridad inicial).


Para recapitular el problema, un disco duro que contiene una instalación existente de Windows se coloca en un nuevo sistema, y ​​Windows no instala automáticamente los controladores para el hardware y le pide al usuario que instale controladores sin firmar, incluso para los controladores que se supone que están firmados. Además, el usuario no puede aceptar los cuadros de diálogo porque Windows no ha instalado los controladores para el teclado o el mouse (u otros dispositivos de entrada).


Aquí está la versión tl; rd:

  1. Haga una copia de seguridad de las colmenas del registro.
  2. Desactive todos los programas, controladores y servicios que pueda.
  3. Configure cosas (como la barra de tareas) para que pueda ver todo (no oculte ninguna información).
  4. Haga que un archivo .BAT se ejecute automáticamente para tener una manera fácil de hacer cambios y realizar tareas en línea (en el sistema operativo).
  5. Use una aplicación de macro / scripting para automatizar las pulsaciones de teclas y clics de botones, ya que no puede hacerlo usted mismo.
  6. Asegúrese de que todos los archivos del sistema estén presentes.
  7. Elimine manualmente el hardware problemático y que ya no está presente.

  1. :

    • Inicie en DOS (puro) u otro sistema operativo y haga una copia de seguridad de las colmenas del registro en otra ubicación. Esto incluye %systemroot%\System32\CONFIG\*y%userprofile%\NTUSER.DAT

    • Asegúrese de que la configuración de la unidad / partición en BOOT.INI y SystemBootDeviceen [HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet00 * \ Control] esté configurada correctamente, ya que la unidad del sistema ahora puede estar en una unidad / partición diferente de lo que solía estar (en mi caso, el (r) el disco solía ser 0, pero ahora era 1 debido a la nueva unidad).

  2. :

    • Monte las colmenas de registro apropiadas y desactive todos y cada uno de los programas extraños de ejecución automática, particularmente cualquier cosa que arroje ventanas y cosas que oculten su vista, ya que no podrá minimizarlas ni hacer clic en las otras ventanas / cuadros de diálogo al frente (usted debe simplificarse para solucionar un problema como este). No tiene que eliminar las entradas de ejecución automática, puede deshabilitarlas en su lugar, de modo que todavía estén allí para cuando ejecute Windows y desee volver a ejecutarlas automáticamente (especialmente para las entradas que tienen un montón de comandos argumentos de línea):

      • Para las Runteclas, simplemente puede agregar un #personaje o algo al comienzo del comando. De esa manera, Windows no podrá ejecutarlo, ya que no es un archivo válido y lo ignorará.

      • Monte la sección SYSTEM y configure el startparámetro en deshabilitado (dword: 4) para los controladores y servicios extraños (especialmente aquellos para hardware que ya no está presente).

      • Deshabilite PageDefrag , etc. en BootExecute... \ Control \ Session Manager agregando un #al comienzo del comando (aunque autocheckno lo haga, ya que querrá que las unidades se verifiquen / arreglen si termina reiniciando mediante el botón de reinicio).

      • En lugar de eliminar los accesos directos en las Startupcarpetas, simplemente muévalos a otro lugar.  

    • Configure Windows para instalar controladores independientemente de la firma del controlador montando las colmenas y la configuración del registro SOFTWARE y NTUSER \Software\Microsoft\Driver Signingy \Software\Microsoft\Non-Driver Signingen BIN: 00.

  3. :

    • Querrá ver la barra de tareas y el área de notificación, así que encienda la parte superior y desactive el ocultamiento automático montando NTUSER y editando \Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2para establecer el noveno byte para que el bit 0 esté apagado y el bit 1 esté encendido (0x7A mostrará la información máxima ). Además, desactive cualquier otro programa de consolidación / manipulación de la barra de tareas, como TrayManager de PCMag (tal vez lo obtuvo antes de que comenzaran a vender sus utilidades).
  4. :

    • Monte la sección SOFTWARE y agregue una entrada de ejecución automática para ejecutar un archivo .BAT al inicio (sin ninguna razón, llamé al mío C:\t\j.BAT). Ahora puede hacer que Windows haga cosas sin tener ninguna entrada directa. Por supuesto, requiere reiniciar a otro sistema operativo, modificar el archivo por lotes e iniciar Windows nuevamente para hacer un cambio, pero es mejor que no tener forma de hacer nada en Windows. ;-)(Puede comentar cosas en lugar de simplemente eliminarlas). Agregue un comando al final del archivo por lotes para reiniciar Windows, por ejemplo shutdown -t 10 -r. ¡No lo olvides o de lo contrario tendrás que presionar el botón de reinicio!

    • En su archivo por lotes (p j.bat. Ej. ), Realice ciertas acciones como importar cualquier archivo .REG (que puede editar sin conexión, en otro sistema operativo al igual que con su archivo por lotes). Haga que el archivo por lotes ejecute el Administrador de dispositivos y maximice la ventana (con una herramienta como Nircmd ) para tener la oportunidad de ver el estado actual del hardware. (Intente usar una herramienta de línea de comandos como QRes para establecer la resolución al máximo que su controlador de video, que puede ser el adaptador VGA genérico en este momento, puede hacer, por ejemplo, 1024x768). También puede volver a registrar archivos .DLL para arreglar Algunos problemas, especialmente los relacionados con Windows Update.

    • No desea que el archivo por lotes se ejecute rápida y locamente, por lo que querrá obtener una herramienta de línea de comandos que pueda pausar durante un número determinado de segundos para pausar la ejecución del script; no, el pausecomando no es bueno ya que requiere presionar una tecla para continuar. (Usé un programa que escribí hace años, pero hay muchos disponibles en Internet, o simplemente uso un truco común ).

  5. :

    • Obtenga una aplicación de grabación de macro / scripting como HotkeyMaster , WinMacro , MacroMaker , AutoHotkey , AutoIt! , etc. y configúrelo para realizar cualquier acción de teclado o mouse que necesite (de esta manera puede "hacer" cosas en Windows sin tener ningún dispositivo de entrada disponible). Deberá configurarlo para detectar ciertas ventanas o cuadros de diálogo por título y / o clase y / o control y realizar ciertos clics del mouse o pulsaciones de teclas en consecuencia. Por ejemplo, puede hacer que detecte automáticamente los cuadros de diálogo de confirmación del controlador y active un clic en NextoContinuebotones. (Asegúrese de configurar la aplicación de macros para que se ejecute al inicio en lugar de en el archivo .BAT para asegurarse de que se estén ejecutando cuando Windows detecte el hardware y comience a solicitar controladores; alternativamente, hágalos al comienzo del archivo por lotes utilizando el startcomando para evitar que el archivo por lotes se bloquee en ellos, ya que no se cerrarán).
  6. :

    • Asegúrese de que todos los archivos del sistema necesarios estén en su lugar. Ejecutar (a través del archivo por lotes) sfc /scannow. Asegúrese de tener su disco de Windows en la unidad, suponiendo que Windows incluso tenga instalados los controladores de CD / DVD. También puede intentar copiar manualmente los archivos que faltan sin conexión. Por ejemplo, copié todos los archivos de mi última copia de seguridad de XP, especificando no sobrescribir los archivos que existen. De esa manera, se restauraron los archivos faltantes (especialmente en los siguientes directorios:

      • C: \ Windows
      • C: \ Windows \ INF
      • C: \ Windows \ Driver Cache
      • C: \ Windows \ ServicePackFiles
      • C: \ Windows \ System32
      • C: \ Windows \ System32 \ dllcache
      • C: \ Windows \ System32 \ Drivers

      • (También sucedió que restauré los siguientes directorios relacionados con la instalación que no son de hardware no mucho antes de que finalmente comenzara a funcionar nuevamente. ¿Coincidencia? No lo sé).

      • C: \ Windows \ Assembly
      • C: \ Windows \ Microsoft.NET
      • C: \ Windows \ WinSxS
      • C: \ Windows \ Ayuda
      • C: \ Windows \ System32 \ WBEM

      • (Es posible que desee eliminar o cambiar el nombre de C: \ Windows \ System32 \ CatRoot *)

  7. :

    • Elimine todos los archivos .PNF en C: \ Windows \ INF. Windows los reconstruirá a partir de los archivos .INF existentes la próxima vez que necesite instalar un controlador (que en este punto todavía está en cada arranque). Esto es similar a borrar el caché del navegador cuando una página no se muestra correctamente, para asegurarse de que está obteniendo y utilizando la copia más actualizada de los archivos.

    • Como último recurso, obtenga y use la herramienta de Microsoft DEVCONpara eliminar ciertos dispositivos para que Windows pueda intentar instalar el hardware desde cero. Primero, sin embargo, querrá ejecutar el comando (a través de su archivo por lotes) DEVCON findall * > C:\t\devcon.logpara volcar una lista de todo su hardware y sus ID correspondientes. De esa manera, puede compilar una lista adecuada y personalizada de qué hardware desea eliminar. Los dispositivos de nota para eliminar incluyen lo siguiente:

      • "* ACPI *"
      • "CONECCION CASERA PARA EL USB*"
      • "SERENUM \ MOUSE *"
      • " VEN_8086 "
      • "ESCONDIDO*"
      • "* TUNMP *"
      • "PCI \ VEN_1102 *"
      • "PCI \ VEN_1033 *"
      • "PCI \ VEN_1011 *"
      • "PCI \ VEN_1186 *"
      • "PCI \ VEN_11AB *"
      • "PCI \ VEN_1274 *"
      • "PCI \ VEN_5333 *"

      • (Estos son los principales dispositivos relacionados con la placa base, como procesadores, puertos, buses, dispositivos de entrada, tarjetas de red, discos duros y unidades ópticas).


Como puede ver, es (no sorprendentemente) un gran dolor hacer que Windows vuelva a funcionar si conecta la unidad del sistema a un nuevo sistema (lea la placa base) y desea evitar tener que volver a instalarla. No tener un método de entrada lo hace muy difícil, pero no imposible . Se necesita mucho tiempo, esfuerzo, paciencia, herramientas, atención al detalle y precaución, pero es posible y las recompensas (posponer una reinstalación completa y, por lo tanto, perder quién sabe cuántas miles de personalizaciones se hicieron con el tiempo ) puede valer la pena.

Afortunadamente, finalmente logré hacerlo funcionar porque no estoy listo para instalarlo y volver a instalarlo. Ahora no solo puedo volver a usar Outlook Express (y descargar y purgar los aproximadamente 5.000 correos electrónicos que se habían acumulado en mis cuentas), sino que puedo volver a programar algo en mi copia instalada de VS2003. (No es que no me estuviera acostumbrando a Windows 7; de hecho, por un tiempo, me sentí extraño en XP, pero me siento como en casa otra vez, como mudarme a un dormitorio por un año, luego volver a vivir en tu dormitorio en casa)

Synetech
fuente
1

Compartiré mi respuesta desde aquí, el script se muestra correctamente en el sitio de MSFN: http://www.msfn.org/board/topic/49514-disable-found-new-hardware-wizard/?do=findComment&comment=1132792

Hice una secuencia de comandos AutoIt3 https://www.autoitscript.com/site/autoit/downloads/ que continuaría con todas las ventanas del Asistente para nuevo hardware aceptando controladores no firmados, Cancelando solicitudes de CD de WinXP y omitiendo múltiples opciones (conectarse a internet, etc.) , para que el mouse y el teclado sean detectados e instalados. El script autoit compilado EXE debe copiarse en la carpeta "Inicio" (dentro del "Menú Inicio") para ejecutarse automáticamente. Las cadenas de guión DEBEN adaptarse al idioma local de Windows. Y probablemente algunas combinaciones Alt-LETTER también. Mi muestra funciona en ESPAÑOL WinXP. Espero que ayude a alguien más, después de que el mouse y el teclado funcionen, el script debe eliminarse (o moverse a otra carpeta):

$asistente= "Asistente para hardware nuevo encontrado" ;"Found New Hardware Wizard"
$instalacion= "Instalación de hardware"
$archivos= "Archivos necesarios"
$cambio= "Cambio de configuración del sistema"

while 1
sleep(200)

if WinExists( $cambio) then
   WinActivate( $cambio)
   sleep(200)
   Send("!n")        ; (press Alt-n)
endif

if WinExists( $instalacion) then
   WinActivate( $instalacion)
   sleep(200)
   $text=WinGetText( $instalacion)
   if StringInStr( $text, "El software que está instalando para este hardware") then ;"The software..."
     Send("!c")
    endIf
;  MsgBox($MB_OK, "Autoit Status", $text & stringinstr( $text, "está"), 2 )  ;  sleep(2000)
endif

if WinExists($archivos) then
   WinActivate($archivos)
   sleep(200)
   $text=WinGetText( $archivos)
   if StringInStr( $text, "Se necesita el archivo") then
       ControlClick( "Archivos necesarios", "", "[ID:2]" )
    endIf
endif

if WinExists( $asistente) then
   WinActivate( $asistente)
   sleep( 200)
   $text=WinGetText( $asistente)

   if StringInStr( $text, "Desea que Windows se conecte a Windows Update") then ;"Can Windows connect to Windows Update to search for software?"
;     ControlCommand( $asistente, "", "[ID:8104]", "Check", "")
     sleep(150)
;     ControlClick( $asistente, "", "[ID:12324]")
     Send("!n")
     sleep(100)
     Send("!t")
     sleep(250)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Este asistente le ayudará a instalar software para:") then ;"This wizard"
     sleep(150)
     Send("!t")
     sleep(250)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "No se puede instalar este hardware") then ;"Cannot Install this Hardware"
     ControlCommand( $asistente, "", "[ID:1030]", "UnCheck", "")
     sleep(200)
     ;ControlClick( $asistente, "", "[ID:12325]")
      Send("{ENTER}")
     sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "desea que haga el asistente?") then ;"What do you want the wizard to do?"
   ControlCommand( $asistente, "", "[ID:1049]", "Check", "")
   sleep(200)
   ControlClick( $asistente, "", "[ID:12324]")
   sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Se recomienda que se conecte a Internet para que el asistente") then
   ControlCommand( $asistente, "", "[ID:1065]", "Check", "")
   sleep(200)
   ControlClick( $asistente, "", "[ID:12324]")
   sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Finalizar para cerrar") then ;"Click Finish to close the wizard."
   ControlClick( $asistente, "", "[ID:12325]")
   sleep(250)
   endif
endif

wend 
isidroco
fuente
No simplemente copie y pegue sus respuestas sin el formato adecuado, es muy fácil arreglar su formato para que esta respuesta se vea bien aquí.
cascer1
Lo siento cascer1, hice ese código yo mismo, el formato se ve bien para mí, excepto por una sangría faltante de IF al final.
isidroco
No recuerdo si hubiera comenzado a usar AutoIt (o AutoHotkey en mi caso) en 2011, de lo contrario definitivamente lo habría usado. 👍
Synetech
0

El asistente solo aparece cuando no hay un controlador coincidente en la ruta del controlador del sistema. Según technet , tendría que modificar HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ DevicePath fuera de línea para agregar la (s) carpeta (s) que contienen la información de su controlador para buscarlas automáticamente antes de abrir el asistente.

Puede ser más sencillo reinstalar con todos los controladores integrados si eso no funciona.

SilverbackNet
fuente
Eso parecía prometedor, pero desafortunadamente la configuración ya es correcta ( %SystemRoot%\inf). De hecho, las entradas en CurrentVersion\Setuptambién son buenas (como DriverCachePathy Installation Sources). Incluso me he asegurado de que los ficheros INF, DriverCachey DLLCacheestán todos presentes y representaron. Windows debería poder encontrar e instalar controladores (al menos para los componentes básicos, incluso si la tarjeta de video o lo que sea más nuevo que Windows, no lo es, por lo que no tenía un controlador. Parece que no puedo obtener Windows detectar e instalar controladores para los puertos o dispositivos de entrada.
Synetech
¿Quizás no has verificado su PEDIDO? Leer este . Parece que te has encontrado con un problema similar. Creo que podría solucionarlo montando la colmena y reordenando las entradas de DevicePath, y haciendo que Windows encuentre primero el teclado y el mouse. (Comentarios después de 3 años;))
Jet
0

Para este problema, agregué Teamviewer al inicio e instalé hardware faltante (/ w teclado y mouse) a través de él.

Nemis
fuente
2
Eso requeriría haberlo instalado previamente antes de necesitarlo, o bien poder usar el teclado y el mouse para poder instalarlo. De cualquier manera, el acceso remoto podría ser una buena idea, pero no ayudará en una situación como esta.
Synetech el
@Synetech, ¿no se pudo instalar automáticamente mediante un script?
Pacerier