Freigeben über


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
CERT_STORE_ADD_ALWAYS
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.
CERT_STORE_ADD_NEW
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.
CERT_STORE_ADD_REPLACE_EXISTING
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.
CERT_STORE_ADD_USE_EXISTING
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
CRYPT_E_EXISTS
Für einen dwAddDisposition-Parameter von CERT_STORE_ADD_NEW ist das Zertifikat bereits im Speicher vorhanden.
E_INVALIDARG
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

Weitere Informationen

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

CertOpenStore

CertOpenSystemStore

Zertifikatfunktionen