次の方法で共有


MsiGetFileSignatureInformationA 関数 (msi.h)

MsiGetFileSignatureInformation 関数は、デジタル署名されたファイルへのパスを取得し、ファイルの署名者証明書とハッシュを返します。 MsiGetFileSignatureInformation を呼び出して、MsiDigitalCertificateMsiPatchCertificate、および msiDigitalSignature テーブルを するために必要な署名者証明書とハッシュを取得できます。

Windows インストーラー 3.0 以降: Windows インストーラー 3.0 以降では、MsiPatchCertificate テーブルと MsiDigitalCertificate テーブルを使用して、パッチ (.msp ファイル) のデジタル署名を検証できます。 詳細については、「セキュリティで保護されたインストール の作成に関する ガイドライン」および「ユーザー アカウント制御 (UAC) パッチ適用ガイドライン」を参照してください。

Windows インストーラー 2.0: パッチのデジタル署名はサポートされていません。 Windows インストーラー 2.0 は、破損したリソースを検出する手段としてデジタル署名を使用し、外部キャビネットのデジタル署名のみを検証できます。また、MsiDigitalSignatureMsiDigitalCertificate テーブルの使用によってのみ検証できます。

構文

HRESULT MsiGetFileSignatureInformationA(
  [in]      LPCSTR         szSignedObjectPath,
  [in]      DWORD          dwFlags,
  [out]     PCCERT_CONTEXT *ppcCertContext,
  [out]     LPBYTE         pbHashData,
  [in, out] LPDWORD        pcbHashData
);

パラメーター

[in] szSignedObjectPath

デジタル署名を含むファイルへの完全なパスを指定する null で終わる文字列へのポインター。

[in] dwFlags

特殊なエラー ケース フラグ。

意味
MSI_INVALID_HASH_IS_FATAL
0x1
このフラグを設定せず、証明書コンテキストのみを要求する場合、デジタル署名の無効なハッシュでは、MsiGetFileSignatureInformation は致命的なエラーを返しません。

無効なハッシュの致命的なエラーを返すには、MSI_INVALID_HASH_IS_FATAL フラグを設定します。

[out] ppcCertContext

返された署名者証明書コンテキスト

[out] pbHashData

返されたハッシュ バッファー。 ハッシュ データが要求されていない場合、このパラメーターは NULL できます。

[in, out] pcbHashData

pbHashData パラメーターによって指されるバッファーのサイズをバイト単位で指定する変数へのポインター。 pbHashData が NULL以外 場合、このパラメーターは NULLできません。 ERROR_MORE_DATAが返された場合、pbHashData ハッシュ データを保持するために必要なバッファーのサイズが提供されます。 ERROR_SUCCESSが返された場合、ハッシュ バッファーに書き込まれたバイト数が返されます。 pbHashData が NULL場合、pcbHashData パラメーターは無視されます。

戻り値

価値 意味
ERROR_SUCCESS/S_OK
正常に完了しました。
ERROR_INVALID_PARAMETER
無効なパラメーターが指定されました。
ERROR_FUNCTION_FAILED

WinVerifyTrust はシステムでは使用できません。 MsiGetFileSignatureInformation 、システムに Wintrust.dll ファイルが存在する必要があります。

ERROR_MORE_DATA
バッファーが小さすぎて、要求されたデータを保持できません。 ERROR_MORE_DATAが返された場合、pcbHashData は、ハッシュ データを保持するために必要なバッファーのサイズを提供します。
TRUST_E_NOSIGNATURE
ファイルが署名されていません
TRUST_E_BAD_DIGEST
ファイルの現在のハッシュは、ファイルのデジタル署名に格納されているハッシュに従って無効です。
CERT_E_REVOKED
ファイルの署名者証明書が取り消されました。 ファイルのデジタル署名が侵害されています。
TRUST_E_SUBJECT_NOT_TRUSTED
サブジェクトが指定された検証アクションに失敗しました。 ほとんどの信頼プロバイダーは、エラーの原因を説明するより詳細なエラー コードを返します。
TRUST_E_PROVIDER_UNKNOWN
信頼プロバイダーは、このシステムでは認識されません。
TRUST_E_ACTION_UNKNOWN
信頼プロバイダーは、指定されたアクションをサポートしていません。
TRUST_E_SUBJECT_FORM_UNKNOWN
信頼プロバイダーは、サブジェクトに指定されたフォームをサポートしていません。
 
 

MsiGetFileSignatureInformation は、HRESULT_FROM_WIN32によって HRESULT データ型と同等の にマップされたすべての Win32 エラー値も返します。

備考

証明書コンテキストのみを要求する場合、デジタル署名の無効なハッシュでは、MsiGetFileSignatureInformation は致命的なエラーを返しません。 無効なハッシュの致命的なエラーを返すには、dwFlags パラメーターにMSI_INVALID_HASH_IS_FATAL フラグを設定します。

証明書コンテキストとハッシュ情報は、WinVerifyTrust呼び出しによってファイルから抽出されます。 ppcCertContext パラメーターは、署名からの署名者証明書コンテキストの複製です。 呼び出し元は、CertFreeCertificateContext 呼び出して、完了時に証明書コンテキストを解放する必要があります。

MsiGetFileSignatureInformation には、システム上に Wintrust.dll ファイルが存在する必要があることに注意してください。

手記

msi.h ヘッダーは、MSIGetFileSignatureInformation をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP 上の Windows インストーラー。 Windows インストーラーのバージョンで必要な最小 Windows Service Pack の詳細については、Windows インストーラーの Run-Time 要件を参照してください。
ターゲット プラットフォーム の ウィンドウズ
ヘッダー msi.h
ライブラリ Msi.lib
DLL Msi.dll

関連項目

デジタル署名と Windows インストーラー の

MsiDigitalCertificate テーブル の

MsiDigitalSignature テーブル