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。
Signature_ | Parent | 路径 | 深度 |
---|---|---|---|
MsiDll | {null} | c:\windows\system32 | 0 |
属性 | 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