MsiGetFileSignatureInformationA-Funktion (msi.h)
Die MsiGetFileSignatureInformation-Funktion übernimmt den Pfad zu einer Datei, die digital signiert wurde, und gibt das Signaturzertifikat und den Hash der Datei zurück. MsiGetFileSignatureInformation kann aufgerufen werden, um das Signerzertifikat und den Hash abzurufen, der zum Auffüllen der Tabellen MsiDigitalCertificate, MsiPatchCertificate und MsiDigitalSignature 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 Tabellen MsiPatchCertificate und MsiDigitalCertificate überprüfen. Weitere Informationen finden Sie unter Richtlinien zum Erstellen sicherer Installationen und Zum Patchen der 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 Schränke und nur mithilfe der Tabellen MsiDigitalSignature und MsiDigitalCertificate ü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
Zeiger auf eine null-beendete Zeichenfolge, die den vollständigen Pfad zur Datei angibt, die die digitale Signatur enthält.
[in] dwFlags
Spezielle Flags für Fehlerfälle.
[out] ppcCertContext
Kontext des zurückgegebenen Signaturzertifikats
[out] pbHashData
Zurückgegebener Hashpuffer. Dieser Parameter kann NULL sein, wenn die Hashdaten nicht angefordert werden.
[in, out] pcbHashData
Zeiger auf eine Variable, die die Größe des Puffers in Bytes angibt, auf den der pbHashData-Parameter verweist. Dieser Parameter kann nicht NULL sein, wenn pbHashData nicht NULL ist. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pbHashData die Größe des Puffers an, der für die Hashdaten erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, wird die Anzahl der In den Hashpuffer geschriebenen Bytes angegeben. Der pcbHashData-Parameter wird ignoriert, wenn pbHashDataNULL ist.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Erfolgreicher Abschluss. |
|
Es wurde ein ungültiger Parameter angegeben. |
|
WinVerifyTrust ist auf dem System nicht verfügbar. MsiGetFileSignatureInformation erfordert das Vorhandensein der Wintrust.dll-Datei auf dem System. |
|
Ein Puffer ist zu klein, um die angeforderten Daten aufzunehmen. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pcbHashData die Größe des Puffers an, der für die Hashdaten erforderlich ist. |
|
Die Datei ist nicht signiert. |
|
Der aktuelle Hash der Datei ist entsprechend 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 Antragsteller 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 Vertrauensstellungsanbieter unterstützt die angegebene Aktion nicht. |
|
Der Vertrauensstellungsanbieter unterstützt das für den Antragsteller angegebene Formular nicht. |
MsiGetFileSignatureInformation gibt auch alle Win32-Fehlerwerte zurück, die dem entsprechenden HRESULT-Datentyp durch HRESULT_FROM_WIN32 zugeordnet sind.
Hinweise
Wenn nur der Zertifikatkontext angefordert wird, führt ein ungültiger Hash in der digitalen Signatur nicht dazu, dass MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückgibt. 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 WinVerifyTrust aus der Datei extrahiert. Der ppcCertContext-Parameter ist ein Duplikat des Signaturzertifikatkontexts. Es liegt in der Verantwortung des Aufrufers , CertFreeCertificateContext aufzurufen, um den Zertifikatkontext nach Abschluss frei zu geben.
Beachten Sie, dass msiGetFileSignatureInformation das Vorhandensein der Wintrust.dll-Datei auf dem System erfordert.
Hinweis
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 nicht codierungsneutralem Code 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 |
---|---|
Unterstützte Mindestversion (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 erforderlichen Windows Service Pack für eine Windows Installer-Version finden Sie unter Windows Installer – Laufzeitanforderungen. |
Zielplattform | Windows |
Kopfzeile | msi.h |
Bibliothek | Msi.lib |
DLL | Msi.dll |