MsiGetFileSignatureInformationA-Funktion (msi.h)
Die MsiGetFileSignatureInformation--Funktion verwendet den Pfad zu einer Datei, die digital signiert wurde, und gibt das Signiererzertifikat und den Hash der Datei zurück. MsiGetFileSignatureInformation- kann aufgerufen werden, um das Signierzertifikat und hash abzurufen, das zum Auffüllen der MsiDigitalCertificate, MsiPatchCertificateund MsiDigitalSignature Tabellen erforderlich ist.
Windows Installer 3.0 und höher: Ab Windows Installer 3.0 kann Windows Installer die digitalen Signaturen von Patches (MSP-Dateien) mithilfe der MsiPatchCertificate und MsiDigitalCertificate Tabellen überprüfen. Weitere Informationen finden Sie unter Richtlinien für die Erstellung sicherer Installationen und Benutzerkontensteuerung (User Account Control, UAC).
Windows Installer 2.0: Digitale Signaturen von Patches werden nicht unterstützt. Windows Installer 2.0 verwendet digitale Signaturen als Mittel zum Erkennen beschädigter Ressourcen und kann nur die digitalen Signaturen externer Cabs überprüfen und nur mithilfe der MsiDigitalSignature und MsiDigitalCertificate Tabellen überprüfen.
Syntax
HRESULT MsiGetFileSignatureInformationA(
[in] LPCSTR szSignedObjectPath,
[in] DWORD dwFlags,
[out] PCCERT_CONTEXT *ppcCertContext,
[out] LPBYTE pbHashData,
[in, out] LPDWORD pcbHashData
);
Parameter
[in] szSignedObjectPath
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den vollständigen Pfad zu der Datei angibt, die die digitale Signatur enthält.
[in] dwFlags
Besondere Fehlerfallkennzeichnungen.
[out] ppcCertContext
Zurückgegebener Signiererzertifikatkontext
[out] pbHashData
Zurückgegebener Hashpuffer. Dieser Parameter kann NULL- werden, wenn die Hashdaten nicht angefordert werden.
[in, out] pcbHashData
Zeigen Sie auf eine Variable, die die Größe des Puffers in Byte angibt, auf den der pbHashData--Parameter verweist. Dieser Parameter kann nicht NULL- werden, wenn pbHashData- nichtNULL-ist. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pbHashData- die Größe des Puffers an, der zum Halten der Hashdaten erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, gibt sie die Anzahl der Bytes an, die in den Hashpuffer geschrieben wurden. Der pcbHashData- Parameter wird ignoriert, wenn pbHashData-NULL-ist.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Erfolgreicher Abschluss. |
|
Ungültiger Parameter wurde angegeben. |
|
WinVerifyTrust- ist auf dem System nicht verfügbar. MsiGetFileSignatureInformation erfordert das Vorhandensein der Wintrust.dll Datei im System. |
|
Ein Puffer ist zu klein, um die angeforderten Daten zu speichern. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pcbHashData- die Größe des Puffers an, der zum Halten der Hashdaten erforderlich ist. |
|
Die Datei ist nicht signiert. |
|
Der aktuelle Hash der Datei ist gemäß dem in der digitalen Signatur der Datei gespeicherten Hash ungültig. |
|
Das Signaturzertifikat der Datei wurde widerrufen. Die digitale Signatur der Datei wird kompromittiert. |
|
Der Betreff hat die angegebene Überprüfungsaktion fehlgeschlagen. Die meisten Vertrauensanbieter geben einen detaillierteren Fehlercode zurück, der den Grund für den Fehler beschreibt. |
|
Der Vertrauensanbieter wird auf diesem System nicht erkannt. |
|
Der Vertrauensanbieter unterstützt die angegebene Aktion nicht. |
|
Der Vertrauensanbieter unterstützt das für den Betreff angegebene Formular nicht. |
MsiGetFileSignatureInformation gibt auch alle Win32-Fehlerwerte zurück, die ihrem entsprechenden HRESULT- Datentyp nach HRESULT_FROM_WIN32zugeordnet sind.
Bemerkungen
Beim Anfordern nur des Zertifikatkontexts führt ein ungültiger Hash in der digitalen Signatur nicht dazu, MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückzugeben. Um einen schwerwiegenden Fehler für einen ungültigen Hash zurückzugeben, legen Sie das MSI_INVALID_HASH_IS_FATAL Flag im dwFlags Parameter fest.
Der Zertifikatkontext und die Hashinformationen werden durch einen Aufruf von WinVerifyTrustaus der Datei extrahiert. Der ppcCertContext Parameter ist ein Duplikat des Signiererzertifikatkontexts aus der Signatur. Es liegt in der Verantwortung des Aufrufers, CertFreeCertificateContext aufzurufen, um den Zertifikatkontext nach Abschluss freizugeben.
Beachten Sie, dass MsiGetFileSignatureInformation- das Vorhandensein der Wintrust.dll Datei auf dem System erfordert.
Anmerkung
Der msi.h-Header definiert MsiGetFileSignatureInformation als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP. Informationen zum mindestens von einer Windows Installer-Version erforderlichen Windows-Service Pack finden Sie unter den Windows Installer-Run-Time Anforderungen. |
Zielplattform- | Fenster |
Header- | msi.h |
Library | Msi.lib |
DLL- | Msi.dll |