Windows 7 声称驱动程序未经过数字签名,但实际上

Windows 7 声称驱动程序未经过数字签名,但实际上

在此系统上,WLAN AutoConfig 服务将无法启动:

在错误日志/系统中:

“WLAN AutoConfig 服务依赖于 NativeWiFi Filter 服务,该服务由于以下错误而无法启动:Windows 无法验证此文件的数字签名。最近的硬件或软件更改可能安装了签名不正确或已损坏的文件,或者可能是来自未知来源的恶意软件。”

错误/日志安全:

“代码完整性确定文件的图像哈希无效。该文件可能由于未经授权的修改而损坏,或者无效哈希可能表示潜在的磁盘设备错误。C:\Windows\system32\drivers\nwifi.sys”

我运行了 sfc /scannow 并且没有发现错误。

我运行了 sigverif,它说此文件以及 vwififlt.sys 都未签名。

接下来我上传无线网络管理器无线网络驱动程序发送至virustotal,它说它们已经签名并且没问题。

最后我直接将这些文件与另一台 Windows 7 机器上的相同文件进行了比较。它们的 sha256 和 md5 值完全相同,而另一台机器认为它们已签名。

怎么了?

答案1

Windows 驱动程序通常不包含实际文件中的数字签名。相反,一组驱动程序的所有签名都捆绑到一个称为目录的文件中。如果此文件损坏,它所验证的所有文件都将被标记为未签名。Windows 不会告诉您损坏的确实是目录,您只能猜测。它也不会告诉您哪个目录已损坏。目录存储在 中c:\windows\system32\catroot\

您必须去一台正常运行的机器上运行 sigverif,然后查看日志。您将在文件中看到如下一行:

nwifi.sys 14/07/2009 2:5.1,2:5.2,2:6.0,2:Signed Microsoft-Windows-ClMicrosoft Windows

Microsoft-Windows-Cl是包含此文件签名的目录名称的一部分。Windows 不会告诉我们整个文件名,并且有 11 个目录文件以此字符串开头。为了找到它到底是哪一个,您必须安装 Windows SDK 才能获取该程序signtool.exe。在 catroot 文件夹中,在一个长 CLSID 下,您将找到一堆以此字符串开头的文件。为了找出哪一个已损坏,请使用 signtool 尝试验证 nwifi.sys。最终您会找到它:

signtool verify /a /c c:\windows\system32\catroot\{F...}\Windows-Client-Features-Package~31bf3856ad364e35~amd64~~6.1.7601.17514.cat c:\windows\system32\drivers\nwifi.sys

此命令在正常的 Windows 7 机器(带 wifi)上会成功。在有问题的机器上会失败。在比较目录文件后,我发现它们是不同的,如果我直接双击损坏的文件,Windows 确实会拒绝打开它。当然,在我弄清楚之前,它根本不会给出问题是什么的线索。

因此,此时要修理机器,只需将目录从正常工作的机器复制到损坏的机器即可。

相关内容