近期的多个版本的 NVIDIA 驱动程序正在破坏 WMI。当我们的系统无法更新组策略、运行策略结果集并且其他项目损坏时,我们发现了这一点。这会影响 Windows 10 和 Windows 11 - 我只在 64 位版本上进行了测试。
发生的情况是,当驱动程序安装时,它会清除以下注册表项:
HKLM\Software\Microsoft\Wbem\CIMOM\Autorecover MOFs
您将看到一个几乎为空的列表,并且第一个条目将是这样的:
C:\WINDOWS\SYSTEM32\DRIVERSTORE\FILEREPOSITORY\NVDM.INF_AMD64_63A490995FFE8D23\NVWMI\NVWMI.MOF
注意,此键的第一行通常为空白,因此正常情况下它可能看起来是空的。您需要打开它才能看到内容。
此项本身不会破坏任何东西。但是,当操作系统检测到并尝试修复 WMI 中的问题时,会利用此项。触发此问题的一个示例是手动运行winmgmt /resetrepository
。发生这种情况时,Windows 会参考上述注册表项来确定要重建哪些 WMI 提供程序。由于此项被删除,丢失了所有现成的提供程序,WMI 实质上将受到破坏,从而破坏系统上的许多东西。
有问题的驱动程序版本目前由 Microsoft(通过 Windows 更新)、Dell 和其他制造商提供。换句话说,如果您只是允许 Windows 自行更新或尝试从制造商处更新驱动程序,它将破坏此注册表项。有问题的驱动程序nvdm.inf
在安装期间尝试添加 WMI 提供程序。安装可能试图删除 NVIDIA 提供程序的任何旧条目,而是完全删除该项。
但是,我已确认目前提供的最新 NVIDIA 驱动程序(版本 537.99)不会导致此问题。它的架构也明显不同,甚至不再有 nvdm.inf 文件。
我已经彻底排除了其他任何可能性,这个问题在重新安装 Windows 并允许它安装 Microsoft 的 NVIDIA 驱动程序后不久就出现了。无论来源如何,只要安装受影响版本的驱动程序,也会发生这种情况。我已确认以下 NVIDIA 显示驱动程序版本导致了问题:
- 来自戴尔:31.0.15.2892
- 来自微软:31.0.15.2852
来自 NVIDIA(537.99)的最新软件包中的版本 31.0.15.3799 不会导致此问题。
我发现另一个参考资料提到了 HP 软件包中存在此类错误。不幸的是,他们的建议和我发现的“修复”方法是从类似的系统复制密钥。但是,如果 WMI 已经损坏,那么让一切恢复正常可能会很困难,甚至不可能。我们发现恢复密钥和重建 WMI 仍然不能修复所有问题,而且这还不包括在驱动程序安装之前安装的任何第三方提供商。
这是一个相当严重的漏洞,可能在数十万台电脑上埋下了一颗定时炸弹。它影响了我们组织中的数百台电脑,其中大部分是配备 NVIDIA 显卡的戴尔笔记本电脑。
我不确定这对任何人有何帮助,但最好在 WMI 受到攻击之前主动捕获此问题并恢复密钥,同时确保在尝试使用任何 Microsoft 或制造商提供的驱动程序之前安装了最新的 NVIDIA 驱动程序。