9

Моя материнская плата, наконец, умерла через большую часть десятилетия, поэтому я купил подержанную систему. Я вставил старый жесткий диск и звуковую карту в новую систему и подключил старую клавиатуру и мышь (остальные компоненты - процессор, оперативная память, mobo, видеокарта - из новой системы).

Я заранее знал, что будет сложно заставить Windows загрузить и установить драйверы для нового оборудования (особенно, поскольку базовые компоненты являются новыми), но я совершенно не могу даже попытаться выполнить работу по установке драйверов для таких вещей, как видеокарта , так как клавиатура и мышь не будут работать (они работают, на экране BIOS, в режиме DOS, в Windows 7, в меню загрузки ХР и т.д., но только не в самой Windows XP).

Всякий раз, когда я пытаюсь загрузить XP (в обычном или безопасном режиме), я получаю всплывающие подсказки для всего обнаруженного нового оборудования и мастер установки нового оборудования для процессора (очевидно, он должен устанавливать драйверы для компонентов самого низкого уровня). наверх). К сожалению, я не могу нажать Next, так как клавиатура и мышь еще не будут работать, потому что драйверы материнской платы (для портов PS/2 или USB) еще не установлены. Я даже попробовал мышь с последовательным интерфейсом, но безрезультатно - опять же, она работает в DOS, 7 и т.д., Но не в XP, потому что на ней не установлен драйвер последовательного порта.

Я попытался смонтировать ульи ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ и СИСТЕМЫ под Windows 7, чтобы вручную настроить игнорирование "предупреждения о неподписанных драйверах" (используя оба параметра политики подписывания драйверов, на которые я нашел ссылки). Это не сработало; Я все еще получаю волшебника.

Они даже не являются модными, проприетарными, сторонними или неподписанными драйверами. Это драйверы, которые поставляются с Windows - как это обычно бывает с драйверами для ЦП, ОЗУ, контроллера IDE и т.д. При этом драйверы клавиатуры и мыши являются общими (но, как я уже сказал, они не имеют значения, поскольку драйверы для портов, к которым они подключены, еще не установлены).

Очевидно, в какой-то момент времени за последние несколько лет изменился параметр, чтобы Windows всегда запрашивала у меня уведомление при обнаружении нового оборудования. (Он также был настроен так, чтобы при отключении происходило аварийное отключение, поэтому мне пришлось отключить его, чтобы я мог даже видеть рабочий стол.)

О, и я попытался удалить все файлы PNF, чтобы они были восстановлены, но это тоже не помогло.

Кто-нибудь знает, как я могу сбросить Windows, чтобы хотя бы попытаться автоматически установить драйверы для нового оборудования, прежде чем предлагать мне в случае сбоя? И наоборот, кто-нибудь знает, как именно отключить автоматическую установку драйверов (и подсказать с помощью мастера)?

Большое спасибо.


Просто чтобы быть ясным, поскольку в ответах, скорее всего, он появится, я не говорю о диалоге ниже, я говорю о том, что ниже.

альтернативный текст

альтернативный текст


Да, и исключить любые предложения следующего рода, прежде чем они произойдут, используя Диспетчер устройств для отключения, удаления, восстановления и т.д., О любых устройствах не может быть и речи, потому что если клавиатура и мышь (или любое другое устройство ввода) не ' t установлен / работает, то как именно я буду выполнять какие-либо действия, такие как использование диспетчера устройств?

4 ответа4

10

Я наконец получил Windows XP, работающую на моей новой старой системе в пятницу! Woohoo! (Это заняло всего 5 с половиной месяцев.)

Я бы изложил конкретные шаги, необходимые для ее устранения в случае, если кто-то еще столкнется с подобной проблемой, хотя, к сожалению, из-за растущего разочарования и нетерпения я в конечном итоге выбрал несколько выжженный подход и выполнял несколько шагов одновременно. Однако я сохранил рабочие файлы, которые использовал, и обнаружил сделанные мной изменения, поэтому я перечислю несколько вещей, которые можно попробовать, или, по крайней мере, они должны помочь.

(Очевидно, что это продвинутый материал для опытных пользователей; хотя даже опытные пользователи могут испортить это довольно плохо, отсюда начальный шаг резервного копирования.)


Чтобы вспомнить проблему, жесткий диск, содержащий существующую установку Windows, помещается в новую систему, и Windows не устанавливает автоматически драйверы для оборудования и предлагает пользователю установить неподписанные драйверы, даже для драйверов, которые должны быть подписаны. Кроме того, пользователь не может принять диалог (ы), потому что Windows не установила драйверы для клавиатуры или мыши (или других устройств ввода).


Вот версия tl; rd:

  1. Сделайте резервную копию реестра ульев.
  2. Отключите все программы, драйверы и службы, которые вы можете.
  3. Настройте вещи (например, панель задач), чтобы вы могли видеть все (не скрывайте никакой информации).
  4. ЕстьBAT-файл автоматически запускается, чтобы иметь простой способ вносить изменения и выполнять онлайн-задачи (в ОС).
  5. Используйте приложение макросов / сценариев для автоматизации нажатий клавиш и нажатий кнопок, поскольку вы не можете сделать это самостоятельно.
  6. Убедитесь, что все системные файлы присутствуют.
  7. Вручную удалите проблемное и более не существующее оборудование.

  1. :

    • Загрузитесь в (чистую) DOS или другую ОС и создайте резервную копию кустов реестра в другом месте. Это включает в себя %systemroot%\System32\CONFIG\* и %userprofile%\NTUSER.DAT

    • Убедитесь, что настройки дисков / разделов в BOOT.INI и SystemBootDevice в [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00 *\Control] установлены правильно, поскольку ваш системный диск теперь может находиться на другом диске / разделе, чем раньше (в моем случае, (r) диск был 0, но теперь был 1 из-за нового диска).

  2. :

    • Смонтируйте соответствующие кусты реестра и отключите все посторонние автозапускаемые программы, особенно все, что вызывает окна и все такое, что закрывает ваш взгляд, поскольку вы не сможете свернуть их или щелкнуть другие окна / диалоговые окна впереди (вы необходимо упростить для устранения проблемы, как эта). Вам не нужно удалять записи автозапуска, вы можете вместо этого отключить их, чтобы они оставались там, когда вы запускаете Windows и хотите снова запустить их автоматически (особенно для записей, которые имеют несколько команд аргументы):

      • Для клавиш Run вы можете просто добавить символ # или что-то в начале команды. Таким образом, Windows не сможет запустить его, так как это недопустимый файл, и будет игнорировать его.

      • Смонтируйте куст SYSTEM и установите для параметра start значение отключено (dword:4) для любых посторонних драйверов и служб (особенно тех, которые больше не используются).

      • Отключите PageDefrag и т.д. В BootExecute в… \Control \Session Manager, добавив знак # в начало команды (хотя оставьте autocheck одиночку, так как вы захотите проверить / исправить накопители, если в итоге вам придется перезагрузиться с помощью кнопки сброса ).

      • Вместо того, чтобы удалять любые ярлыки в папках Startup , просто переместите их в другое место.  

    • Настройте Windows для установки драйверов независимо от подписи драйверов, подключив кусты реестра ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ и NTUSER и установив \Software\Microsoft\Driver Signing и \Software\Microsoft\Non-Driver Signing в BIN:00.

  3. :

    • Вы захотите увидеть панель задач и область уведомлений, поэтому включите самый верхний и отключите автоматическое скрытие, установив NTUSER и отредактировав \Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 чтобы установить 9-й байт так, чтобы бит 0 был выключен и бит 1 включен (0x7A покажет максимальную информацию ). Кроме того, отключите любые другие программы консолидации / манипуляции на панели задач, такие как TrayManager PCMag (возможно, вы получили его до того, как начали продавать свои утилиты).
  4. :

    • Смонтируйте улей ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ и добавьте запись автозапуска для запуска.Файл BAT при запуске (без причины я назвал мой C:\t\j.BAT ). Теперь вы можете легко заставить Windows делать что-либо, не имея прямого ввода. Конечно, это требует перезагрузки другой ОС, изменения командного файла и повторной загрузки Windows, чтобы внести изменения, но это лучше, чем отсутствие каких-либо действий в Windows. ;-) (Вы можете закомментировать материал, а не просто удалить его.) Добавьте команду в конце командного файла для перезагрузки Windows, например shutdown -t 10 -r . Не забывайте об этом, иначе вам придется нажимать кнопку сброса!

    • В вашем пакетном файле (например, j.bat ) выполните определенные действия, такие как импорт любого.REG-файлы (которые вы можете редактировать в автономном режиме, в другой ОС, так же, как вы можете использовать свой пакетный файл). Попросите командный файл запустить диспетчер устройств и развернуть окно (с помощью такого инструмента, как Nircmd ), чтобы дать себе возможность просматривать текущее состояние оборудования. (Попробуйте использовать инструмент командной строки, такой как QRes, чтобы установить максимальное разрешение, которое может сделать ваш видеодрайвер - который может быть универсальным адаптером VGA, например, 1024x768.) Вы также можете зарегистрироваться заново.DLL файлы, чтобы исправить некоторые проблемы, особенно те, которые связаны с Центром обновления Windows.

    • Вы не хотите, чтобы командный файл выполнялся быстро и безумно, поэтому вам понадобится инструмент командной строки, который может приостанавливать выполнение заданного количества секунд, чтобы приостановить выполнение сценария - нет, команда pause не годится поскольку для продолжения требуется нажать клавишу. (Я использовал программу, которую написал несколько лет назад, но в интернете их достаточно, или просто пользуюсь обычным хакером .)

  5. :

    • Получите приложение для записи макросов / создания сценариев, такое как HotkeyMaster , WinMacro , MacroMaker , AutoHotkey , AutoIt! и т. д. и сконфигурируйте его для выполнения любых действий с клавиатурой или мышью, которые вам нужны (таким образом, вы можете «делать» что-то в Windows, фактически не имея доступных устройств ввода). Вы захотите настроить его так, чтобы он определял определенные окна или диалоговые окна по названию и / или классу и / или элементу управления и соответственно выполнял определенные щелчки мыши или нажатия клавиш. Например, вы можете автоматически определить диалоговое окно подтверждения драйвера и нажать кнопку « Next или « Continue . (Убедитесь, что приложение макроса запускается при запуске, а не в.Файл BAT, чтобы убедиться, что они работают к тому времени, когда Windows обнаружит оборудование и начнет запрашивать драйверы; поочередно, пусть они запускаются в начале командного файла с помощью команды start чтобы избежать блокирования командного файла, поскольку они не будут выходить.)
  6. :

    • Убедитесь, что все необходимые системные файлы на месте. Запустите (через командный файл) sfc /scannow . Убедитесь, что ваш диск Windows находится в дисководе, при условии, что в Windows даже установлены драйверы CD / DVD. Вы также можете попробовать вручную скопировать все отсутствующие файлы в автономном режиме. Например, я скопировал все файлы из моей последней резервной копии XP, указав не перезаписывать существующие файлы. Таким образом, все отсутствующие файлы были восстановлены (особенно в следующих каталогах:

      • C:\Windows
      • C:\Windows \INF
      • C:\Windows \ Кэш драйверов
      • C:\Windows \ ServicePackFiles
      • C:\Windows \ System32
      • C:\Windows \ System32 \ Dllcache
      • C:\Windows \ System32 \ Drivers

      • (Мне также довелось восстановить следующие каталоги, не связанные с установкой оборудования, незадолго до того, как они наконец снова заработали. Стечение обстоятельств? Я не знаю.)

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

      • (Вы можете удалить или переименовать C:\Windows \ System32 \ CatRoot *)

  7. :

    • Удалить все.PNF файлы в C:\Windows \INF. Windows перестроит их из существующих.INF файлы в следующий раз, когда ему нужно установить драйвер (который на данный момент все еще при каждой загрузке). Это похоже на очистку кэша браузера, когда страница отображается некорректно, чтобы обеспечить получение и использование самой последней копии файлов.

    • В крайнем случае, получите и используйте инструмент Microsoft DEVCON для удаления определенных устройств, чтобы Windows могла попробовать установить оборудование с нуля. Однако сначала вы захотите запустить команду (через ваш пакетный файл) DEVCON findall * > C:\t\devcon.log чтобы вывести список всего вашего оборудования и соответствующих им идентификаторов. Таким образом, вы можете составить правильный и настраиваемый список того, какое оборудование вы хотите удалить. К устройствам, которые необходимо удалить, относятся следующие:

      • "* ACPI *"
      • "USB \ ROOT_HUB *"
      • "SERENUM \ MOUSE *"
      • " VEN_8086 "
      • "HID *"
      • "* TUNMP *"
      • "PCI \ VEN_1102 *"
      • "PCI \ VEN_1033 *"
      • "PCI \ VEN_1011 *"
      • "PCI \ VEN_1186 *"
      • "PCI \ VEN_11AB *"
      • "PCI \ VEN_1274 *"
      • "PCI \ VEN_5333 *"

      • (Это основные устройства, связанные с материнской платой, такие как процессоры, порты, шины, устройства ввода, сетевые карты, жесткие диски и оптические приводы.)


Как вы можете видеть, это (не удивительно) огромная боль , чтобы получить Windows , работает снова , если вы шлепнуть системный диск в новую систему (читай материнскую плату) и хотите , чтобы избежать необходимости переустановить. Отсутствие метода ввода делает это очень трудным, но не невозможным. Это занимает много времени, усилий, терпения, инструменты, внимание к деталям, и осторожность, но это возможно, и награды (откладывая полную переустановку и тем самым теряя кто знает , сколько тысяч настроек сделано в течение долгого времени ) может стоить того.

К счастью, мне наконец удалось заставить это работать, потому что я не готов просто установить и переустановить. Теперь я могу не только снова использовать Outlook Express (а также загружать и очищать около 5000 писем, скопившихся в моих учетных записях), но я снова могу заняться программированием в своей установленной копии старого доброго VS2003. (Не то чтобы я не привык к Windows 7; на самом деле, какое-то время я чувствовал себя странно в XP, но я снова чувствую себя как дома, как будто я переезжаю в общежитие на год, а потом возвращаюсь в свой дом. спальня дома.)

0

Мастер появляется только в том случае, если в пути системного драйвера нет подходящего драйвера. Согласно technet, вам придется изменить HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath в автономном режиме, чтобы добавить папку (-и), содержащую информацию о ваших драйверах, чтобы выполнять автоматический поиск до запуска мастера.

Может быть проще переустановить все встроенные драйверы, если это не сработает.

0

Для этой проблемы я добавил Teamviewer при запуске и установил недостающее оборудование (/w клавиатура и мышь) через него.

0

Отсюда я поделюсь своим ответом, скрипт правильно отображается на сайте MSFN: http://www.msfn.org/board/topic/49514-disable-found-new-hardware-wizard/?do=findComment&comment=1132792

Я создал скрипт AutoIt3 https://www.autoitscript.com/site/autoit/downloads/, который продолжал бы со всеми окнами мастера нового оборудования, принимающими неподписанные драйверы, отменой приглашений WinXP CD и пропуском нескольких вариантов (подключение к Интернету и т.д.) , чтобы мышь и клавиатура были обнаружены и установлены. Скомпилированный EXE-скрипт autoit должен быть скопирован в папку "Пуск" (в "Меню Пуск") для автоматического выполнения. Строки сценария ДОЛЖНЫ быть адаптированы к локальному языку Windows. И, возможно, некоторые комбинации Alt-LETTER тоже. Мой образец работает на испанском языке WinXP. Надеюсь, что это поможет кому-то еще, после того, как мышь и клавиатура будут работать, скрипт должен быть удален (или перемещен в другую папку):

$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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .