绕过“发现新硬件向导”/设置 Windows 以自动安装驱动程序

Syn*_*ech 9 windows-registry drivers windows-xp hardware-detection

我的主板在十年的大部分时间后终于死了,所以我买了一个二手系统。我把我的旧硬盘和声卡放在新系统中,并连接我的旧键盘和鼠标(其余组件——CPU、RAM、主板、显卡——来自新系统)。

我事先知道让 Windows 为新硬件启动和安装驱动程序是一个挑战(特别是因为基础组件是新的),但我完全无法尝试完成安装驱动程序的工作,例如视频卡,因为键盘和鼠标将无法正常工作(他们工作,在BIOS屏幕,在DOS模式下,在Windows 7中,XP的启动菜单,等等,只是没有在Windows XP本身)。

每当我尝试启动 XP(在正常或安全模式下)时,我都会为检测到的所有新硬件弹出一堆气球,以及一个用于处理器的新硬件发现向导(显然它必须为最低级别的组件安装驱动程序上)。不幸的是,由于尚未安装主板驱动程序(用于 PS/2 或 USB 端口),键盘和鼠标还不能工作,因此我无法单击下一步。我什至尝试了一个串行鼠标,但无济于事——同样,它在 DOS、7 等系统中可以工作,但不能在 XP 中工作,因为它没有安装串行端口驱动程序。

我尝试在 Windows 7 下安装 SOFTWARE 和 SYSTEM 配置单元,以便手动将“未签名驱动程序警告”设置为忽略(使用我发现引用的两个驱动程序签名策略设置)。那没有用;我仍然得到了向导。

它们甚至不是花哨的、专有的、第三方的或未签名的驱动程序。它们是 Windows 附带的驱动程序——就像 CPU、RAM、IDE 控制器等的驱动程序一样。键盘和鼠标驱动程序是通用的(但就像我说的,这些是无关紧要的,因为它们所连接的端口的驱动程序尚未安装)。

显然,在过去几年的某个时间点,设置发生了变化,使 Windows 在检测到新硬件时总是提示我。(它还被配置为在异常关机时显示关机事件跟踪器,所以我不得不将其关闭,以便我什至可以看到桌面。)

哦,我尝试删除所有 PNF 文件,以便它们重新生成,但这也无济于事。

有谁知道如何重置 Windows 以至少尝试自动安装新硬件的驱动程序,然后再提示我失败?相反,有谁知道如何关闭自动驱动程序安装(并使用向导提示)?

非常感谢。


为了清楚起见,否则它可能会出现在答案中,我不是在谈论下面的对话,我在谈论下面的对话。

替代文字

替代文字


哦,并且在它们发生之前阻止以下任何建议,使用设备管理器禁用,卸载,修复等任何设备都是不可能的,因为如果键盘和鼠标(或任何其他输入设备)是' t 安装/工作,那么我将如何执行任何操作,例如使用设备管理器?

Syn*_*ech 10

星期五,我终于让 Windows XP 在我的新旧系统上运行了!呜呼!(只用了 5.5 个月。)

如果其他人遇到类似问题,我会说明修复它所需的具体步骤,但不幸的是,由于越来越多的挫折和不耐烦,我最终采取了一种有点焦土的方法并一次执行多个步骤。但是,我确实保留了我使用的工作文件,并找出了我所做的更改,因此我将列出一些可以尝试或至少应该有所帮助的方法。

(显然,这对于高级用户来说是高级的东西;尽管即使是高级用户也可能把它搞得一团糟,因此是初始备份步骤。)


回顾一下这个问题,将包含现有 Windows 安装的硬盘驱动器放入新系统,Windows 不会自动安装硬件驱动程序,并提示用户安装未签名的驱动程序,即使是应该签名的驱动程序。此外,用户无法接受对话框,因为 Windows 尚未安装键盘或鼠标(或其他输入设备)的驱动程序。


这是 tl;rd 版本:

  1. 备份注册表配置单元。
  2. 尽可能禁用所有程序、驱动程序和服务。
  3. 设置内容(如任务栏),以便您可以看到所有内容(不要隐藏任何信息)。
  4. 让 .BAT 文件自动运行,以便轻松进行更改和执行在线(操作系统内)任务。
  5. 使用宏/脚本应用程序来自动化按键和按钮点击,因为您无法自己完成。
  6. 确保所有系统文件都存在。
  7. 手动移除有问题且不再存在的硬件。

    • 启动到(纯)DOS 或其他操作系统,并将注册表配置单元的备份副本复制到另一个位置。这包括%systemroot%\System32\CONFIG\*%userprofile%\NTUSER.DAT

    • 确保 BOOT.INI 和SystemBootDevice[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00*\Control] 中的驱动器/分区设置正确设置,因为您的系统驱动器现在可能位于与以前不同的驱动器/分区上(在我的情况下, (r)disk 曾经是 0,但由于新驱动器现在是 1)。

    • 安装适当的注册表配置单元并禁用任何和所有无关的自动运行程序,尤其是任何会抛出窗口和遮挡视线的东西,因为您将无法将它们最小化或单击前面的其他窗口/对话框(您必须简化以解决此类问题)。您不必删除自动运行条目,您可以禁用它们,以便在您运行 Windows 并希望再次自动运行它们时它们仍然存在(特别是对于具有一堆命令的条目-line 参数):

      • 对于Run按键,您可以简单地在#命令的开头输入一个字符或其他东西。这样,Windows 将无法运行它,因为它不是一个有效的文件并且会忽略它。

      • 挂载 SYSTEM 配置单元并将start参数设置为禁用 (dword:4) 任何无关的驱动程序和服务(尤其是那些不再存在的硬件)。

      • 通过在命令的开头添加 a来禁用...\Control\Session Manager 中的PageDefrag等(尽管不要管它,因为如果您最终不得不通过重置按钮重新启动,您将希望检查/修复驱动器)。BootExecute#autocheck

      • 不要删除Startup文件夹中的任何快捷方式,只需将它们移到其他地方即可。  

    • Windows设置为通过安装软件和NTUSER注册表配置和设置,无论司机签名的安装驱动程序\Software\Microsoft\Driver Signing,并\Software\Microsoft\Non-Driver Signing以BIN:00。

    • 您将希望看到任务栏和通知区域,因此通过安装 NTUSER 并编辑\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2设置第 9 个字节来打开最顶部并关闭自动隐藏,以便位 0 关闭,位 1 打开(0x7A 将显示最大信息)。此外,禁用任何其他任务栏合并/操作程序,例如 PCMag 的TrayManager(也许您在他们开始销售其实用程序之前就已获得它)。
    • 挂载 SOFTWARE hive 并添加一个自动运行条目以在启动时运行 .BAT 文件(无缘无故,我调用了 mine C:\t\j.BAT)。现在,您无需任何直接输入即可轻松让 Windows 执行操作。当然,它需要重新启动到另一个操作系统,修改批处理文件,然后再次启动 Windows 以进行更改,但这总比在 Windows 中无法做任何事情要好。;-)(您可以注释掉内容,而不仅仅是删除它们。)在批处理文件的末尾添加一个命令以重新启动 Windows,例如shutdown -t 10 -r. 不要忘记这一点,否则您最终将不得不按下重置按钮!

    • 在您的批处理文件(例如j.bat)中,执行某些操作,例如导入任何 .REG 文件(您可以离线编辑,在另一个操作系统中就像您可以使用批处理文件一样)。让批处理文件运行设备管理器并最大化窗口(使用Nircmd等工具),让自己有机会查看硬件的当前状态。(尝试使用像QRes这样的命令行工具将分辨率设置为您的视频驱动程序(此时可能是通用 VGA 适配器)可以做到的最大分辨率,例如 1024x768。)您还可以重新注册 .DLL 文件以修复一些问题,尤其是与 Windows 更新相关的问题。

    • 您不希望批处理文件快速而疯狂地运行,因此您需要一个命令行工具,该工具可以暂停给定的秒数以暂停脚本执行 - 不,该pause命令不好,因为它需要按一个键才能继续。(我用了一个我多年前写的程序,但互联网上有很多可用的,或者只是使用一个普通的 hack。)

    • 获取宏记录器/脚本应用程序,例如HotkeyMasterWinMacroMacroMakerAutoHotkeyAutoIt!等,并将其配置为执行您需要的任何键盘或鼠标操作(这样您就可以在 Windows 中“做”事情,而实际上没有任何可用的输入设备)。您需要将其配置为按标题和/或类别和/或控件检测某些窗口或对话框,并相应地执行某些鼠标单击或按键操作。例如,你可以把它自动检测驱动程序确认对话框,并引发点击NextContinue纽扣。(确保将宏应用程序设置为在启动时运行而不是在 .BAT 文件中运行,以确保它们在 Windows 检测到硬件并开始提示驱动程序时运行;或者,让它们在启动时运行使用start命令来避免批处理文件被阻止,因为它们不会退出。)
    • 确保所有必需的系统文件都已准备就绪。运行(通过批处理文件)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\帮助
      • C:\Windows\System32\WBEM

      • (您可能实际上想要删除或重命名 C:\Windows\System32\CatRoot*)

    • 删除 C:\Windows\INF 中的所有 .PNF 文件。Windows 将在下次需要安装驱动程序时从现有的 .INF 文件重建它们(此时仍然在每次启动时)。这类似于在页面显示不正确时清除浏览器缓存,以确保您获取和使用文件的最新副本。

    • 作为最后的手段,获取并使用 Microsoft 工具DEVCON删除某些设备,以便 Windows 可以尝试从头开始安装硬件。但是,首先,您需要运行命令(通过批处理文件)DEVCON findall * > C:\t\devcon.log以转储所有硬件及其相应 ID 的列表。这样,您就可以编译一个正确的自定义列表,列出要删除的硬件。需要移除的设备包括:

      • “*ACPI*”
      • "USB\ROOT_HUB*"
      • “SERENUM\鼠标*”
      • VEN_8086
      • “隐藏*”
      • “*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(并下载并清除堆积在我帐户中的 5,000 封左右的电子邮件),而且我可以在我安装的旧 VS2003 副本中再次进行一些编程。(并不是说我不习惯 Windows 7;事实上有一段时间,我觉得回到 XP 很奇怪,但我又回到了家的感觉,就像搬进宿舍一年,然后搬回你的家里的卧室。)