CertAddCertificateLinkToStore-Funktion (wincrypt.h)
Die CertAddCertificateLinkToStore-Funktion fügt einen Link in einem Zertifikatspeicher zu einem Zertifikatkontext in einem anderen Speicher hinzu. Anstatt ein Duplikat des Zertifikatkontexts zu erstellen und hinzuzufügen, fügt diese Funktion einen Link zum ursprünglichen Zertifikat hinzu.
Syntax
BOOL CertAddCertificateLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
Parameter
[in] hCertStore
Ein Handle für den Zertifikatspeicher , in dem der Link hinzugefügt werden soll.
[in] pCertContext
Ein Zeiger auf die CERT_CONTEXT Struktur, die verknüpft werden soll.
[in] dwAddDisposition
Gibt die Aktion an, wenn im Speicher bereits ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist. Derzeit definierte Dispositionswerte und ihre Verwendungen sind wie folgt.
Wert | Bedeutung |
---|---|
|
Die Funktion überprüft weder ein vorhandenes übereinstimmende Zertifikat noch einen Link zu einem übereinstimmenden Zertifikat. Dem Speicher wird immer ein neues Zertifikat hinzugefügt. Dies kann zu Duplikaten in einem Store führen. |
|
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, schlägt der Vorgang fehl. GetLastError gibt den CRYPT_E_EXISTS-Code zurück. |
|
Wenn ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird dieser vorhandene Link gelöscht, und ein neuer Link wird erstellt und dem Speicher hinzugefügt. Wenn kein übereinstimmende Zertifikat oder kein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird eines hinzugefügt. |
|
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird das vorhandene Zertifikat verwendet. Die Funktion schlägt nicht fehl, aber es wird kein neuer Link hinzugefügt. Wenn kein übereinstimmende Zertifikat oder kein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird ein neuer Link hinzugefügt. |
[out, optional] ppStoreContext
Ein Zeiger auf einen Zeiger auf eine Kopie des erstellten Links. Der ppStoreContext-Parameter kann NULL sein, um anzugeben, dass keine Kopie des Links erforderlich ist. Wenn eine Kopie des Links erstellt wird, muss diese Kopie mithilfe der Funktion CertFreeCertificateContext freigegeben werden.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.
Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
|
Für einen dwAddDisposition-Parameter von CERT_STORE_ADD_NEW ist das Zertifikat bereits im Speicher vorhanden. |
|
Im dwAddDisposition-Parameter wurde ein ungültiger Dispositionswert angegeben. |
Hinweise
Da der Link Zugriff auf den ursprünglichen Zertifikatkontext ermöglicht, ändert das Festlegen einer erweiterten Eigenschaft im Kontext des verknüpften Zertifikats diese erweiterte Eigenschaft am ursprünglichen Speicherort des Zertifikats und in allen anderen Links zu diesem Zertifikat.
Einem Als Sammlung geöffneten Speicher können keine Links hinzugefügt werden. Als Sammlungen geöffnete Stores umfassen alle Mit CertOpenSystemStore oder CertOpenStore mit CERT_STORE_PROV_SYSTEM oder CERT_STORE_PROV_COLLECTION geöffneten Stores. Weitere Informationen finden Sie unter CertAddStoreToCollection.
Wenn Links verwendet werden und CertCloseStore mit CERT_CLOSE_STORE_FORCE_FLAG aufgerufen wird, muss der Speicher, der Links verwendet, geschlossen werden, bevor der Speicher, der die ursprünglichen Kontexte enthält, geschlossen wird. Wenn CERT_CLOSE_STORE_FORCE_FLAG nicht verwendet wird, können die beiden Speicher in beiden Reihenfolgen geschlossen werden.
Um den Zertifikatkontextlink aus dem Zertifikatspeicher zu entfernen, verwenden Sie die CertDeleteCertificateFromStore-Funktion .
Beispiele
Ein Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel C-Programm: Zertifikatspeichervorgänge. Zusätzlichen Code, der diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Vorgänge für Sammlungs- und gleichgeordneten Zertifikatspeicher.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |