CertEnumCertificatesInStore-Funktion (wincrypt.h)
Die CertEnumCertificatesInStore-Funktion ruft das erste oder nächste Zertifikat in einem Zertifikatspeicher ab. Diese Funktion wird in einer Schleife verwendet und kann nacheinander alle Zertifikate in einem Zertifikatspeicher abrufen.
Syntax
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parameter
[in] hCertStore
Ein Handle eines Zertifikatspeichers.
[in] pPrevCertContext
Ein Zeiger auf den CERT_CONTEXT des vorherigen Zertifikatkontexts gefunden.
Dieser Parameter muss NULL sein, um die Enumeration zu starten und das erste Zertifikat im Speicher abzurufen. Nachfolgende Zertifikate werden aufgelistet, indem pPrevCertContext auf den Zeiger festgelegt wird, der von einem vorherigen Aufruf der Funktion zurückgegeben wird. Diese Funktion gibt die CERT_CONTEXT frei, auf die von Nicht-NULL-Werten dieses Parameters verwiesen wird.
Für logische Speicher, einschließlich Sammlungsspeichern, kann ein Duplikat des von dieser Funktion zurückgegebenen pCertContext nicht verwendet werden, um eine neue Unterteilung von Enumerationen zu beginnen, da das duplizierte Zertifikat den anfänglichen Enumerationsstatus verliert. Die Enumeration überspringt alle Zertifikate, die zuvor von CertDeleteCertificateFromStore gelöscht wurden.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion einen Zeiger auf die nächste CERT_CONTEXT im Speicher zurück. Wenn keine weiteren Zertifikate im Speicher vorhanden sind, gibt die Funktion NULL zurück.
Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.
Wert | BESCHREIBUNG |
---|---|
|
Das Handle im hCertStore-Parameter ist nicht dasselbe wie im Zertifikatkontext, auf den pPrevCertContext verweist. |
|
Es wurden keine Zertifikate gefunden. Dies geschieht, wenn der Speicher leer ist oder wenn die Funktion das Ende der Liste des Speichers erreicht hat. |
|
Gilt für externe Speicher. Es wurden keine Zertifikate gefunden. Dies geschieht, wenn der Speicher leer ist oder wenn die Funktion das Ende der Liste des Speichers erreicht hat. |
Hinweise
Der zurückgegebene Zeiger wird freigegeben, wenn er als pPrevCertContext-Parameter bei einem nachfolgenden Aufruf übergeben wird. Andernfalls muss der Zeiger durch Aufrufen von CertFreeCertificateContext freigegeben werden. Ein pPrevCertContext, der nicht NULL an CertEnumCertificatesInStore übergeben wird, wird immer für einen Fehler freigegeben.
Ein Duplikat des derzeit aufgezählten Zertifikats kann durch Aufrufen von CertDuplicateCertificateContext erstellt werden.
Beispiele
Im folgenden Beispiel werden die Zertifikatkontexte im Zertifikatspeicher aufgelistet. Ein weiteres Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel C-Programm: Löschen von Zertifikaten aus einem Zertifikatspeicher.
#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")
//--------------------------------------------------------------------
// Declare and initialize variables.
HANDLE hStoreHandle = NULL;
PCCERT_CONTEXT pCertContext = NULL;
char * pszStoreName = "CA";
//--------------------------------------------------------------------
// Open a system certificate store.
if (hStoreHandle = CertOpenSystemStore(
NULL,
pszStoreName))
{
printf("The %s store has been opened. \n", pszStoreName);
}
else
{
printf("The store was not opened.\n");
exit(1);
}
//-------------------------------------------------------------------
// Find the certificates in the system store.
while(pCertContext= CertEnumCertificatesInStore(
hStoreHandle,
pCertContext)) // on the first call to the function,
// this parameter is NULL
// on all subsequent calls,
// this parameter is the last pointer
// returned by the function
{
//----------------------------------------------------------------
// Do whatever is needed for a current certificate.
// ...
} // End of while.
//--------------------------------------------------------------------
// Clean up.
if (!CertCloseStore(
hStoreHandle,
0))
{
printf("Failed CertCloseStore\n");
exit(1);
}
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
CertDeleteCertificateFromStore
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für