Signature 表

Signature 表保存用于唯一标识文件签名的信息。 有关签名的详细信息,请参阅数字签名和 Windows Installer

Signature 表包含以下列。

类型 密钥 Nullable
签名 Identifier Y N
FileName 文本 N N
MinVersion 文本 N Y
MaxVersion 文本 N Y
MinSize DoubleInteger N Y
MaxSize DoubleInteger N Y
MinDate DoubleInteger N Y
MaxDate DoubleInteger N Y
语言 文本 N Y

 

Signature

Signature 列是唯一的文件签名。

FileName

文件的名称。

MinVersion

文件的最低版本,附带语言比较。 如果指定了此字段,则文件版本必须至少等于 MinVersion。 如果文件版本等于 MinVersion 字段值,但 Languages 列中指定的语言不同,则文件不满足签名筛选条件。

注意

Languages 列中指定的语言用于比较,无法忽略语言。 如果你希望无论文件的语言如何,它都满足 MinVersion 字段要求,则必须在 MinVersion 字段中输入一个比实际值小 1 的值。 例如,如果筛选器的最低版本为 2.0.2600.1183,请使用 2.0.2600.1182 查找文件,这样就不会匹配语言信息。

 

MaxVersion

文件的最大版本。 如果指定了此字段,则文件版本必须小于或等于 MaxVersion。

MinSize

文件的最小大小。 如果指定了此字段,则要检查的文件的大小必须至少等于 MinSize。 必须是非负数。

MaxSize

文件的最大大小。 如果指定了此字段,则要检查的文件的大小必须小于或等于 MaxSize。 必须是非负数。

MinDate

文件的最小修改日期和时间。 如果指定了此字段,则要检查的文件的修改日期和时间必须至少等于 MinDate。 必须是非负数。 此字段的格式是两个 WORD 类型的字节对齐 16 位值。 高序 WORD 值指定 MS-DOS 日期格式的日期。 低序 WORD 值指定 MS-DOS 时间格式的时间。 时间值 0 表示午夜。 请参阅“备注”部分。

MaxDate

文件的最大创建日期。 如果指定了此字段,则要检查的文件的创建日期必须小于或等于 MaxDate。 必须是非负数。 此字段的格式是两个 WORD 类型的字节对齐 16 位值。 高序 WORD 值指定 MS-DOS 日期格式的日期。 低序 WORD 值指定 MS-DOS 时间格式的时间。 时间值 0 表示午夜。 请参阅“备注”部分。

Languages

文件支持的语言。

备注

此表与 AppSearch 表一起使用。

使用 RegLocator 表IniLocator 表CompLocator 表DrLocator 表搜索签名。 此表的列通常未本地化。 如果作者决定用多种语言搜索产品,则表中可针对每种语言包含单独的条目。

Signature 表通常遵循 Windows Installer 文件版本控制规则。 除非文件版本相同,否则不会评估 Signature 表的 Languages 列中指定的语言。 Languages 列确保文件属于特定的语言(如果它是请求的版本)。 没有任何方法可以忽略 Languages 列。 在 Languages 列中输入 NULL 值被视为文件没有语言,并且不会将文件的文件签名与 Signature 表中出现的语言进行匹配。 以下示例搜索特定版本的 MSI.DLL。

DrLocator 表

Signature_ Parent 路径 深度
MsiDll {null} c:\windows\system32 0

 

AppSearch 表

属性 Signature_
MSIDLL MsiDll

 

Signature 表

签名 FileName MinVersion MaxVersion MinSize MaxSize MinDate MaxDate 语言
MsiDll msi.dll 2.0.2600.1106 {null} {null} {null} {null} {null} 0

 

在这种情况下,在 Windows XP SP1 上,AppSearch 操作会将 MSIDLL 设置为 c:\windows\system32\msi.dll,因为 MSI.DLL 是不区分语言的文件。 如果将 Languages 列的值从 0 更改为 1033,则 AppSearch 操作将找不到匹配的 msi.dll,并且不会定义 MSIDLL 属性。

不能使用 Signature 表来单独查询语言。 若要搜索文件的不同语言版本,必须在 Signature 表中为每个语言版本创建一个单独的条目。 如果在 Languages 列中提供了多个语言,则会搜索支持所有这些语言的文件。

MinDate 和 MaxDate 列的格式是两个 WORD 类型的字节对齐 16 位值。

日期 WORD

Bits Content
0–4 月份日期 (1-31)
5-8 月份(1 = 一月,2 = 二月,以此类推)
9-15 从 1980 年算起的年份偏移量(加上 1980 得到实际年份)

 

时间 WORD

Bits Content
0–4 秒数除以 2
5-10 分钟 (0-59)
11-15 小时(0-23,24 小时制)

 

MinDate 和 MaxDate 字段值的计算公式为:

( (年份 - 1980) * 512 + 月份 * 32 + 月份日期 ) * 65536 + 小时数 * 2048 + 分钟数 * 32 + 秒数/2

验证

ICE03
ICE06