Signature テーブル

Signature テーブルには、ファイル署名を一意に識別する情報が保持されます。 署名の詳細については、「デジタル署名と Windows インストーラー」を参照してください。

Signature テーブルには次の列があります。

Column 種類 キー 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
Languages テキスト N Y

 

[列]

Signature

Signature 列は一意のファイル署名です。

FileName

ファイルの名前です。

MinVersion

言語の比較を行うファイルの最小バージョン。 このフィールドを指定した場合、ファイルのバージョンは MinVersion 以上である必要があります。 ファイルのバージョンが MinVersion フィールド値と等しいが、Languages 列で指定された言語が異なる場合、ファイルでは署名フィルター条件が満たされません。

Note

Languages 列で指定された言語は比較で使用され、言語を無視する方法はありません。 言語に関係なく 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 時を表します。 「解説」を参照してください。

Languages

ファイルでサポートされている言語。

解説

このテーブルは AppSearch テーブルと共に使われます。

署名は、RegLocator テーブルIniLocator テーブルCompLocator テーブルおよび DrLocator テーブルを使用して検索されます。 通常、このテーブルの列はローカライズされません。 作成者が複数の言語で製品を検索する場合、言語ごとに別個のエントリをテーブルに含めることができます。

Signature テーブルは、通常、Windows インストーラーのファイルのバージョン管理規則に従います。 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 Languages
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 テーブルに言語バージョンごとの個別のエントリが必要です。 Languages 列に複数の言語が指定されている場合、検索はこれらすべての言語をサポートするファイルに対して行われます。

MinDate 列と MaxDate 列の形式は、WORD 型の 2 つの 16 ビット値です。

日付 WORD

Bits コンテンツ
0–4 月の日付 (1-31)
5-8 月 (1 = 1 月、2 = 2 月など)
9-15 1980 年からの年オフセット (実際の年を取得するには 1980 を加算します)

 

時刻 WORD

Bits コンテンツ
0–4 秒を 2 で割ったもの
5-10 分 (0-59)
11-15 時間 (24 時間形式の 0-23)

 

MinDate フィールド値と MaxDate フィールド値を計算するための数式は次のとおりです。

( (Year - 1980) * 512 + Month * 32 + Day ) * 65536 + Hours * 2048 + Minutes * 32 + Seconds/2

検証

ICE03
ICE06