如何在 Windows 中验证驱动程序签名并避免错误

最后更新: 17/12/2025
作者: 艾萨克
  • 数字签名 驱动程序 en Windows 保证控制器的完整性并起到屏障作用 恶意软件 底层恶意软件,例如 rootkit。
  • 可以通过检查 .cat 文件中证书的 EKU 并使用 SignTool 检查 .sys 中嵌入的签名来验证提交中的 Microsoft 签名。
  • Windows 允许您放松或禁用签名验证。 引导 临时方案、组策略、测试模式或 bcdedit,始终存在安全风险。
  • 类似的工具 设备管理器 DriverView 可帮助查找有故障或可疑的驱动程序,并决定是否应该更新或删除它们。

在 Windows 中验证驱动程序签名

设备驱动程序是关键组件 以便Windows能够理解 硬件显卡、打印机、Wi-Fi适配器、声卡等等。当驱动程序出现问题时,会出现奇怪的错误,设备停止工作,或者发生难以解释的崩溃。更复杂的是,多年来,微软一直要求其中许多驱动程序必须…… 数字签名 为了能够正常充电。

Windows 中的驱动程序签名验证 驱动程序签名是一项强大的安全措施,但当您需要安装旧版驱动程序、测试版驱动程序或未经微软批准的制造商提供的驱动程序时,它也可能带来诸多麻烦。本文将详细介绍驱动程序签名的概念、验证方法、遇到臭名昭著的“Windows 无法验证数字签名…(代码 52)”错误时的应对措施,以及禁用(临时或永久)此验证的方法及其所有相关风险。

Windows 中的驱动程序签名究竟是什么?

控制器的数字签名起到真实性证书的作用。这与已签名应用程序中使用的签名非常相似。本质上,它表明驱动程序文件自开发者签名以来未被修改,并且已经过微软认为可靠的验证过程。

当制造商向微软发送驱动程序时这些驱动程序可以进行测试(例如,使用 HLK/HCK)或通过认证签名。无论哪种方式,最终都会生成一个由 Microsoft 颁发的证书签名的软件包。此签名保证驱动程序适用于特定的操作系统和使用场景,并且从源文件传输到您的电脑的过程中没有被损坏或篡改。

对于普通用户而言,这种签名可以起到安全过滤的作用。默认情况下,Windows 只加载经过审核的驱动程序。如果您尝试安装未签名或签名无效的驱动程序,系统可能会阻止安装、显示警告,或者直接无法加载设备,尤其是在 64 位版本的 Windows Vista 及更高版本中。

在后台,控制器签名还用于对抗非常严重的威胁。 例如rootkit,它们伪装成系统驱动程序来获取权限。 系统一旦此类恶意软件被安装为控制器,它就可以监控流量、拦截使用伪造证书的连接、禁用防病毒软件,并隐藏在非常低的级别,使得在没有[不清楚 - 可能是“防病毒”或“防病毒”]的情况下几乎不可能检测到它。 格式.

因此,一般规律很明确。尽可能使用制造商或[unclear/unclear]提供的签名驱动程序。 Windows更新只有当您有充分的理由并且确切知道自己要安装什么时,才应该跳过签名。

Windows 驱动程序的数字签名

案例研究:错误代码 52 “Windows 无法验证数字签名……”

从 Windows Vista x64 和 Windows Server 2008 及更高版本开始经常会遇到以下错误信息:“Windows 无法验证此设备所需驱动程序的数字签名。最近的硬件或软件更改可能安装了未正确签名、已损坏或来自未知来源的恶意软件的文件。(代码 52)”

这条消息的意思很简单,就是控制器的签名无效。 这取决于您系统当前生效的策略。可能是驱动程序根本没有签名、颁发机构不受信任、证书已过期,或者文件完整性受到损害。

实际上,结果是 Windows 会阻止设备工作。例如,这在某些Wi-Fi适配器中很常见。 USB 例如某些 TP-Link TL-WN722N 型号:设备管理器可以识别它们,但显示代码 52,并且设备无法运行,除非您启动系统时暂时禁用强制应用驱动程序签名(使用 F8 或高级启动选项)。

如果你每次启动电脑都必须按 F8 键或使用高级启动选项,那你的电脑可能存在问题。 如果您的驱动程序无法正常工作,则表明问题出在证书签名上。可能是驱动程序已过时、已被修改,或者它使用的证书不被您当前使用的 Windows 版本信任。

  适用于 Windows 系统的 Choco 教程:Chocolatey 的完整分步指南

理想的解决方案是尽可能获取已正确签名的驱动程序版本。可以从制造商的官方网站或通过 Windows 更新获取。如果无法通过以上方式获取,也有方法可以放宽或禁用签名验证,但务必极其谨慎地使用这些方法。

如何验证驱动程序提交中的 Microsoft 签名

在硬件开发、测试或分发环境中经常需要验证一组驱动程序是否真正有效。 由微软签署以及它是否通过了认证或HLK/HCK测试。为此,第一步是从相应的微软硬件面板下载已签名的软件包。

从发货单中下载已签名驱动程序文件的一般步骤 具体步骤如下:在硬件门户网站上找到发货单,选择私有产品标识符,输入驱动程序详细信息,然后在“包裹和签名属性”部分中使用“更多”选项,然后选择“下载签名文件”。

拿到软件包后,关键元素通常是 .cat 文件。 与控制器关联。此目录包含签名和认证信息。您可以从中查看用于签名的证书及其允许的用途。

使用图形界面验证 Microsoft 签名您可以右键单击驱动程序的 .cat 文件,打开“属性”,然后选择“数字签名”选项卡。在那里,您将看到用于签名的证书名称。单击该签名的“详细信息”,然后进入证书的“详细信息”选项卡,即可查看“增强密钥用法”(EKU)字段。

EKU 指示该签名证书的用途。对于 Windows 硬件驱动程序,使用特定的对象标识符 (OID)。以 5 结尾的 OID 通常对应于非认证签名类型,而以 1 结尾的 OID 则表示驱动程序已通过认证签名。当您有两个相同驱动程序的版本并且需要区分它们时,这种区别至关重要。

使用 SignTool 验证签名(签名嵌入在 .sys 文件中)

使用 SignTool 验证驾驶员

除了 .cat 目录中的签名之外许多内核驱动程序都将签名直接嵌入到 .sys 文件中。要检查这种类型的签名,可以使用标准工具: 签名工具包含在 Windows SDK 和 Microsoft 开发工具中。

验证驱动程序中嵌入的签名的典型命令 大概是这样的:

SignTool — 检查签名: SignTool verify /v /pa DriverFileName.sys

在此命令中,选项 确认 它指示 SignTool 验证签名。 指定的驱动程序文件。修饰符 /v 它会启用详细输出,显示进度消息和潜在警告,同时 /pa 它要求按照即插即用设备安装的签名要求进行验证。

请注意,SignTool 不要求您指定具体的证书。 系统会使用用于签署文件的证书;它会搜索系统的证书存储区,以查看信任链是否指向受信任的根证书颁发机构。因此,如果您使用的是测试证书,则必须先将该证书安装到用于验证的计算机的“受信任的根证书颁发机构”存储区中。

SignTool — 实际案例: SignTool verify /v /pa amd64\toaster.sys

如果验证失败,SignTool 将显示错误消息。 指出问题是否在于找不到证书、证书链未到达受信任的根证书、密钥用途不当,或者签名与文件的实际内容不匹配(文件已被篡改或损坏)。

已签名、未签名和通用 Windows 驱动程序

Windows 用户在日常生活中基本上会用到三种类型的驱动程序。:系统本身提供的通用驱动程序、官方制造商驱动程序,以及在较小程度上,不太知名的第三方驱动程序或试用版。

微软通用驱动程序 它们会自动安装,因此您首次启动电脑后即可使用大部分硬件。它们通常提供一组基本功能:例如,对于多功能打印机,您可能只能打印,而无法扫描或使用高级面板功能。

硬件制造商提供的驱动程序 它们通常会添加额外功能、提升性能并启用特定工具:控制面板、校准工具、色彩配置文件、特殊声音功能等等。如果您需要完全卸载 GPU,请使用 DDU.

在谷歌上搜索司机时,第三方网站经常会排在前面。 那些承诺“下载任何驱动程序”或自动安装所有驱动程序的网站。这类网站是恶意软件和篡改驱动程序的典型来源,因此最好避免访问它们。如果您的系统启用了签名验证,许多此类驱动程序将被检测为无效而被阻止。如果您更喜欢使用工具来识别驱动程序,可以使用 司机轻松.

  如何在 Windows 中使用 App-V(应用程序虚拟化):完整指南

最后,还有测试驱动程序或来自小型开发商的驱动程序。这些证书可能使用自签名证书签名,或者由 Windows 默认情况下无法识别的实体签名。在这种情况下,会出现诸如代码 52 之类的警告和错误。

方法一:通过暂时禁用驱动程序签名来启动。

绕过限制最简单、最温和的方法 这需要使用启动选项“禁用驱动程序签名强制”。此模式仅影响当前会话;下次重启后,Windows 将恢复其标准行为。

想法很简单:启动系统时选择此选项。您安装有问题的驱动程序,完成后正常重启。这样做的好处是可以降低…… El Temppo 即使系统未受保护,也不能保证驱动程序在未正确签名的情况下,在未来的启动时仍能继续运行。

在 Windows 8、Windows 10 和 Windows 11经典的 F8 键默认是隐藏的。因此,通常的做法是从系统内部访问高级启动选项。您可以按住该键。 转移 在“开始”菜单中点击“重新启动”时按住(Shift)键,或者在窗口中运行它。 CMD 或运行:

高级登录权限: shutdown.exe /r /o

重启后,Windows 将显示诊断选项菜单。接下来,依次点击“疑难解答”>“高级选项”>“启动设置”。点击“确定”后,系统将重启,并显示一个选项列表。其中会包含“禁用驱动程序签名强制”,通常按 F7 键即可选中。

En Windows 7Windows Vista 和同等版本的 Windows Server是的,F8键通常在开机时可用。只需在开机时反复按F8键,进入高级选项,然后直接选择“禁用强制使用签名驱动程序”。

方法二:使用 bcdedit 永久修改启动过程

如果您需要永久禁用签名验证 (例如,在测试或实验室环境中),您可以使用 BCDEDIT,一种直线工具 comandos 它允许您更改 Windows 启动管理器设置。

与之前的临时方法不同,使用 bcdedit 所做的更改是永久性的。 每次重启后都会执行这些操作,直到您撤销它们为止。正因如此,您必须格外谨慎地使用它们,因为这将导致没有有效签名的驱动程序也能被加载。

要禁用检查,请使用 bcdedit打开一个窗口 命令提示 以管理员权限运行(右键单击“以管理员身份运行”),例如:

bcdedit — 启用测试模式并禁用完整性: bcdedit /set testsigning on
bcdedit /set nointegritychecks on

参数 测试签名 激活测试模式旨在允许开发人员上传使用测试证书签名的测试驱动程序。其价值 对 nointegritychecks 它会禁用签名完整性检查,即使驱动程序的签名未能通过通常的验证,Windows 也能加载驱动程序。

当您想要恢复正常的 Windows 行为时您必须使用以下命令从引导加载程序配置中删除这些值:

bcdedit — 还原 testsigning/nointegritychecks: bcdedit /deletevalue testsigning
bcdedit /deletevalue nointegritychecks

如果您对当前哪些值处于激活状态有任何疑问,请联系我们。您可以使用以下命令查看设置:

检查充电器状态: bcdedit /v

在实施这些类型的永久性变更之前,建议考虑以下两点。如果启用了 BitLocker,请暂时禁用它;如果它在 BIOS/UEFI 中启用, 安全启动您需要禁用它,因为此机制专门防止加载未经验证的系统或配置。

通过组策略禁用驱动程序签名

Windows 10/11 专业版用户及同等版本 您可以通过本地组策略编辑器 (gpedit.msc) 调整驱动程序签名行为。此方法在家庭版中不可用。

要使用它,请按 Win + R 打开“运行”对话框。,写道 gpedit.msc 然后按 Enter 键。在打开的编辑器中,导航至“用户配置”>“管理模板”>“系统”>“驱动程序安装”。

在该路径下,您会找到“设备驱动程序的代码签名”选项。双击即可打开其设置。您可以在那里选择不同的策略:警告、阻止或允许。

如果您选择“禁用”或调整策略使其不需要签名,则会触发此操作。Windows 在安装驱动程序时会比较宽松,但您应该记住,这适用于用户上下文,并且可能无法涵盖内核或驱动程序在启动的早期阶段加载的所有情况。

  什么是 AutoHotkey?如何在 Windows 系统中充分利用它?

更改此策略后,建议重启计算机。 为确保新规则得到全面应用。此外,一旦安装了存在问题的驱动程序,请考虑恢复到更严格的配置,以避免该漏洞长期存在。

Windows 中的测试模式

Windows 包含一个经过精心设计的“测试模式”。 适用于需要运行未使用标准证书签名的驱动程序或应用程序的情况。在此模式下,无需使用微软认可的证书颁发机构签名即可加载测试驱动程序。

bcdedit 也可用于激活或停用此模式。您可以使用管理员权限通过控制台控制该参数。 测试签名虽然很多指南都用相反的方法演示,但通常的操作是:

测试签名 — 激活命令: bcdedit /set TESTSIGNING ON

将 TESTSIGNING 设置为 ON 会启动系统进入测试模式。 您的桌面上会出现一个水印,提示类似“Windows 测试模式...”的信息。在此模式下,您可以安装和加载使用测试证书签名的驱动程序。

安装或测试必要的驱动程序完成后建议执行反向命令以返回正常模式:

测试签名 — 停用命令: bcdedit /set TESTSIGNING OFF

这种方法是一种折衷方案。 介于使用 F7 启动的临时方法和完全禁用完整性检查之间。它尤其适用于正在开发中的驱动程序的开发人员和测试人员。

完全禁用驱动程序签名验证

还有一种更彻底的方法,可以永久禁用它。 控制器最重要的安全功能之一是签名完整性检查。这是一种极端解决方案,只能作为最后的手段。

思路很简单:使用 bcdedit 告诉 Windows 不要执行完整性检查 加载驱动程序时。为此,通常在管理员控制台中使用如下命令:

NoIntegrityChecks — 禁用检查: bcdedit.exe /set nointegritychecks on

通过这项调整,Windows 将允许安装和加载未通过签名检查的驱动程序。换句话说,几乎任何驱动程序都可以运行,无论其来源如何,只要其他机制(例如安全启动)不阻止它运行即可。

安装完所有需要的驱动程序后,您就可以开始使用了。强烈建议您撤销此更改并恢复默认值以恢复保护。为此,您可以运行以下命令:

NoIntegrityChecks — 恢复检查: bcdedit.exe /set nointegritychecks off

永久禁用这些检查会大大增加攻击面。恶意驱动程序可以通过此途径获得完全权限,且不会被 Windows 阻止。因此,在个人环境中,通常更明智的做法是使用临时方法或寻找已签名的替代驱动程序,而不是让系统始终处于未受保护的状态。

安装未签名驱动程序的真正危险

司机签字可能看起来很麻烦 你可能只想让你的 Wi-Fi 适配器或旧打印机正常工作,但值得注意的是,这种限制存在的原因。基于驱动程序的威胁(例如 rootkit、bootkit 等)是目前最危险的威胁之一。

恶意驱动程序以 SYSTEM 权限运行。它凌驾于用户和多重防御之上。在此基础上,它可以拦截所有网络流量,篡改证书将连接重定向到虚假网站,记录键盘输入,窥探密码等等。

此外,这类恶意软件通常几乎是隐形的。 这是因为操作系统本身运行的杀毒软件和安全工具加载级别较低。在许多情况下,彻底清除此类rootkit的唯一可靠方法是完全格式化并重新安装Windows系统。

因此,您绝不应轻易禁用驱动程序签名。 不要相信那些要求你禁用某些功能才能安装所谓“神奇驱动程序”或“优化器”的程序。在尝试这些选项之前,最好先从可靠来源寻找替代方案,或者考虑一下你是否真的需要那个特定的驱动程序。

黄金法则很简单:只从可信来源安装驱动程序。尤其是在你放松警惕或禁用签名验证的时候。今天一个小小的便利,如果一个受感染的驱动程序控制了你的电脑,明天就可能变成大问题。

Windows 中的驱动程序证书和签名
相关文章:
Windows 中的驱动程序证书和签名:完整指南