署名テーブル
Signature テーブルには、ファイル署名を一意に識別する情報が保持されます。 署名の詳細については、「デジタル署名と Windows インストーラーの」を参照してください。
Signature テーブルには、次の列があります。
コラム | 種類 | 鍵 | 許容 |
---|---|---|---|
署名 | 識別子の | 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 |
列
-
署名
-
[署名] 列は一意のファイル署名です。
-
FileName
-
ファイルの名前。
-
MinVersion
-
言語比較を使用したファイルの最小バージョン。 このフィールドを指定する場合、ファイルのバージョンが MinVersion 以上である必要があります。 ファイルのバージョンが MinVersion フィールド値と等しいが、[言語] 列で指定された言語が異なる場合、ファイルは署名フィルター条件を満たしていません。
手記
[言語] 列で指定された言語は比較で使用され、言語を無視する方法はありません。 ファイルが言語に関係なく MinVersion フィールドの要件を満たす場合は、MinVersion フィールドに実際の値より 1 小さい値を入力する必要があります。 たとえば、フィルターの最小バージョンが 2.0.2600.1183 の場合は、2.0.2600.1182 を使用して、言語情報と一致せずにファイルを検索します。
-
MaxVersion の
-
ファイルの最大バージョン。 このフィールドを指定する場合、ファイルには MaxVersion と最大で等しいバージョンが必要です。
-
MinSize
-
ファイルの最小サイズ。 このフィールドを指定する場合、検査対象のファイルのサイズは MinSize 以上である必要があります。 これは負以外の数値である必要があります。
-
MaxSize の
-
ファイルの最大サイズ。 このフィールドを指定する場合、検査対象のファイルのサイズは MaxSize 以上である必要があります。 これは負以外の数値である必要があります。
-
minDate の
-
ファイルの最小変更日時。 このフィールドが指定されている場合、検査対象のファイルには、MinDate 以上の変更日時が必要です。 これは負以外の数値である必要があります。 このフィールドの形式は、WORD 型の 2 つのパックされた 16 ビット値です。 WORD 値 高い順序は、日付形式で日付 MS-DOS 指定します。 WORD 値 低い順序では、時刻の形式 MS-DOS 指定します。 時刻値の値 0 は午前 0 時を表します。 「解説」セクションを参照してください。
-
MaxDate の
-
ファイルの最大作成日。 このフィールドを指定する場合、検査対象のファイルの作成日は MaxDate と同じである必要があります。 これは負以外の数値である必要があります。 このフィールドの形式は、WORD 型の 2 つのパックされた 16 ビット値です。 WORD 値 高い順序は、日付形式で日付 MS-DOS 指定します。 WORD 値 低い順序では、時刻の形式 MS-DOS 指定します。 時刻値の値 0 は午前 0 時を表します。 「解説」セクションを参照してください。
-
言語
-
ファイルでサポートされている言語。
備考
このテーブルは、AppSearch テーブルで使用されます。
シグネチャは、RegLocator テーブル、IniLocator テーブル、CompLocator テーブル、および DrLocator テーブルを使用して検索されます。 通常、このテーブルの列はローカライズされません。 作成者が複数の言語で製品を検索することを決定した場合は、各言語のテーブルに個別のエントリを含めることができます。
署名テーブルは、一般に、Windows インストーラー ファイルのバージョン管理規則に従います。 Signature テーブルの [言語] 列で指定された言語は、ファイルのバージョンが同等でない限り評価されません。 [言語] 列では、要求されたバージョンの場合、ファイルが特定の言語であることを確認します。 [言語] 列を無視するメソッドはありません。 [言語] 列に入力された NULL 値は、言語のないファイルとして扱われ、ファイルのファイル署名と Signature テーブルに表示される言語と一致しません。 次の例では、特定のバージョンのMSI.DLLを検索します。
DrLocator テーブル を する
署名_ | 親 | パス | 深さ |
---|---|---|---|
MsiDll | {null} | c:\windows\system32 | 0 |
AppSearch テーブル の
財産 | 署名_ |
---|---|
MSIDLL | MsiDll |
署名テーブル
署名 | FileName | MinVersion | MaxVersion | MinSize | MaxSize | MinDate | MaxDate | 言語 |
---|---|---|---|---|---|---|---|---|
MsiDll | msi.dll | 2.0.2600.1106 | {null} | {null} | {null} | {null} | {null} | 0 |
この場合、Windows XP SP1 では、MSI.DLLは言語に依存しないファイルであるため、AppSearch アクション によって MSIDLL が c:\windows\system32\msi.dll に設定されます。 Languages 列の値が 0 から 1033 に変更された場合、AppSearch アクションは一致する msi.dll を見つけるのに失敗し、MSIDLL プロパティは未定義です。
Signature テーブルを使用して言語だけを照会することはできません。 ファイルの異なる言語バージョンを検索するには、言語バージョンごとに Signature テーブルに個別のエントリが必要です。 [言語] 列に複数の言語が指定されている場合は、それらの言語をすべてサポートするファイルが検索されます。
MinDate 列と MaxDate 列の形式は、WORD 2 つのパックされた 16 ビット値です。
WORD 日付
ビット | コンテンツ |
---|---|
0–4 | 月の日 (1 から 31) |
5-8 | 月 (1 = 1 月、2 = 2 月など) |
9-15 | 1980 年からの年オフセット (実際の年を取得するために 1980 を追加) |
WORD 時刻
ビット | コンテンツ |
---|---|
0–4 | 秒を 2 で割った |
5-10 | 分 (0 から 59) |
11-15 | Hour(0- 23 on 24 hour clock) |
MinDate フィールド値と MaxDate フィールド値を計算する数式は次のとおりです。
( (年 - 1980) * 512 + 月 * 32 + 日 ) * 65536 + 時間 * 2048 + 分 * 32 + 秒/2
検証