目录文件和数字签名

(.cat) 的数字签名目录文件可用作任意文件集合的数字签名。 目录文件包含加密哈希或 指纹的集合。 每个指纹对应于集合中包含的文件。

即插即用 (PnP) 设备安装会将驱动程序包的已签名目录文件识别为驱动程序包的数字签名,其中目录文件中的每个指纹对应于驱动程序包安装的文件。 无论采用何种操作系统,都使用加密技术对目录文件进行数字签名。

如果在驱动程序包签名后更改 驱动程序包 中的任何文件,则 PnP 设备安装会将驱动程序包的数字签名视为无效。 此类文件包括 INF 文件、目录文件以及由 INF CopyFiles 指令复制的所有文件。 例如,即使单字节更改以更正拼写错误,也会使数字签名失效。 如果数字签名无效,则必须将驱动程序包重新提交到 Windows 硬件质量实验室 (WHQL) 以获取新签名,或者为驱动程序包生成新的 Authenticode 签名。

同样,对设备硬件或固件的更改需要修改 的设备 ID 值,以便系统能够检测更新的设备并安装正确的驱动程序。 由于修改的设备 ID 值必须出现在 INF 文件中,因此必须将包重新提交到 WHQL 以获取新签名,或者为驱动程序包生成新的 Authenticode 签名。 即使驱动程序二进制文件未更改,也必须执行此操作。

驱动程序的 INF 文件的 INF 版本部分中CatalogFile 指令指定驱动程序包的目录文件的名称。 在驱动程序安装期间,操作系统使用 CatalogFile 指令来标识和验证目录文件。 系统会将目录文件安装到 GetSystemDirectory 返回的系统目录下的 CatRoot 目录,例如 %SystemRoot%\System32\CatRoot。 请注意,不应手动向该目录添加或删除目录文件。 对于驱动程序包,当驱动程序包暂存到驱动程序存储时,目录文件将自动安装到 CatRoot 中,当驱动程序包从驱动程序存储中删除时,目录文件将自动从 CatRoot 卸载。 如果出于驱动程序包之外的原因需要将目录文件安装到 CatRoot,请参阅使用 SignTool 安装目录文件和使用 CryptCATAdminAddCatalog 安装目录文件

目录文件指南

从 Windows 2000 开始,如果 驱动程序包 在所有版本的 Windows 上安装相同的二进制文件,INF 文件可以包含单个未修改的 CatalogFile 指令。 但是,如果包为不同版本的 Windows 安装不同的二进制文件,INF 文件应包含修饰的 CatalogFile 指令。 有关 CatalogFile 指令的详细信息,请参阅 INF 版本部分

如果有多个驱动程序包,则应为每个驱动程序包创建单独的目录文件,并为每个目录文件指定唯一的文件名。 两个不相关的驱动程序包不能共享单个目录文件。 但是,为多个设备提供服务的单个驱动程序包只需要一个目录文件。