Funzione CertOpenStore (wincrypt.h)
La funzione CertOpenStore apre un archivio certificati usando un tipo di provider di archivio specificato. Anche se questa funzione può aprire un archivio certificati per la maggior parte dei casi, è consigliabile aprire gli archivi certificati più comuni. CertOpenStore è necessario per opzioni più complesse e casi speciali.
Sintassi
HCERTSTORE CertOpenStore(
[in] LPCSTR lpszStoreProvider,
[in] DWORD dwEncodingType,
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwFlags,
[in] const void *pvPara
);
Parametri
[in] lpszStoreProvider
Puntatore a una stringa ANSI con terminazione Null che contiene il tipo di provider dell'archivio.
I valori seguenti rappresentano i tipi di archivio predefiniti. Il tipo di provider store determina il contenuto del parametro pvPara e il significato e l'uso e il significato della parola alta del parametro dwFlags . È possibile installare o registrare provider di archivi aggiuntivi usando la funzione CryptInstallOIDFunctionAddress o CryptRegisterOIDFunction . Per altre informazioni sull'aggiunta di provider di archivi, vedere Estensione della funzionalità CertOpenStore.
Valore | Significato |
---|---|
|
Apre un archivio che sarà una raccolta di altri negozi. Gli archivi vengono aggiunti o rimossi dalla raccolta usando CertAddStoreToCollection e CertRemoveStoreFromCollection. Quando un archivio viene aggiunto a una raccolta, tutti i certificati, i CRL e gli elenchi di scopi consentiti in tale archivio diventano disponibili per le ricerche o le enumerazioni dell'archivio raccolte.
La parola alta di dwFlags è impostata su zero. valore pvPara : il parametro pvPara deve essere NULL. |
|
Inizializza l'archivio con certificati, CRL e CRL letti da un file aperto specificato. Questo provider prevede che il file contenga solo un archivio serializzato e non messaggi firmati PKCS #7 o un singolo certificato codificato.
Il puntatore al file deve essere posizionato all'inizio delle informazioni sull'archivio serializzato. Dopo che i dati nell'archivio serializzato sono stati caricati nell'archivio certificati, il puntatore al file viene posizionato all'inizio di tutti i dati che possono seguire i dati dell'archivio serializzato nel file. Se CERT_FILE_STORE_COMMIT_ENABLE è impostato in dwFlags, l'handle di file viene duplicato e l'archivio viene sempre eseguito il commit come archivio serializzato. Il file non viene chiuso quando l'archivio viene chiuso. valore pvPara : il parametro pvPara deve contenere un puntatore all'handle di un file aperto tramite CreateFile. |
|
Inizializza l'archivio con certificati, CRL e CRL da un file. Il provider apre il file e tenta prima di tutto di leggere il file come archivio serializzato, quindi come messaggio firmato PKCS #7 e infine come singolo certificato codificato.
Il parametro dwEncodingType deve contenere i tipi di codifica da usare sia con i messaggi che con i certificati. Se il file contiene un certificato con codifica X.509 , l'operazione di apertura ha esito negativo e una chiamata alla funzione GetLastError restituirà ERROR_ACCESS_DENIED. Se il flag CERT_FILE_STORE_COMMIT_ENABLE è impostato in dwFlags, il valore dwCreationDisposition passato a CreateFile è il seguente:
Se dwFlags include CERT_FILE_STORE_COMMIT_ENABLE, viene eseguito il commit del file come PKCS #7 o come archivio serializzato a seconda del tipo di file aperto. Se il file è vuoto o se il nome del file ha un'estensione p7c o spc, viene eseguito il commit del file come PKCS #7. In caso contrario, viene eseguito il commit del file come archivio serializzato. valore pvPara : il parametro pvPara deve contenere un puntatore a una stringa ANSI con terminazione Null contenente il nome di un file esistente non aperto. |
|
Uguale a CERT_STORE_PROV_FILENAME_A.
valore pvPara : il parametro pvPara deve contenere un puntatore a una stringa Unicode con terminazione Null contenente il nome di un file esistente non aperto. |
|
Inizializza l'archivio con certificati, CRL e CRL dai risultati di una query LDAP.
Per eseguire operazioni di scrittura nell'archivio, la stringa di query deve specificare una query BASE senza filtro e un singolo attributo. valore pvPara : se il parametro dwFlags contiene CERT_LDAP_STORE_OPENED_FLAG, impostare pvPara sull'indirizzo di una struttura CERT_LDAP_STORE_OPENED_PARA che specifica la sessione LDAP stabilita da usare. In caso contrario, impostare pvPara in modo che punti a una stringa Unicode con terminazione Null contenente la stringa di query LDAP. Per altre informazioni sulle stringhe di query LDAP, vedere Dialetto LDAP. |
|
Crea un archivio certificati nella memoria memorizzata nella cache. All'interno dell'archivio non vengono inizialmente caricati certificati, elenchi di revoche di certificati (CRL) o elenchi di certificati attendibili. In genere viene usato per creare un archivio temporaneo.
Qualsiasi aggiunta di certificati, CRL o CRL o modifiche alle proprietà di certificati, CRL o CRL in un archivio di memoria non viene salvata automaticamente. Possono essere salvati in un file o in un BLOB di memoria usando CertSaveStore. valore pvPara : il parametro pvPara non viene usato. |
|
Inizializza l'archivio con certificati, CRL e CRL dal messaggio di crittografia specificato. Il parametro dwEncodingType deve contenere i tipi di codifica usati con messaggi e certificati.
pvPara value: il parametro pvPara contiene un handle HCRYPTMSG del messaggio codificato, restituito da una chiamata a CryptMsgOpenToDecode. |
|
Inizializza l'archivio con certificati, CRL e CRL da un archivio fisico specificato membro di un archivio di sistema logico.
Due nomi sono separati da una barra rovesciata (\), ad esempio "Root.Default". In questo caso, "Root" è il nome dell'archivio di sistema e ". Default" è il nome dell'archivio fisico. I nomi di archivio fisico e di sistema non possono contenere barre rovesciata. La parola alta di dwFlags indica la posizione dell'archivio di sistema, in genere CERT_SYSTEM_STORE_CURRENT_USER. Per altre informazioni, vedere dwFlags più avanti in questo argomento e vedere Percorsi dell'archivio di sistema. Alcune posizioni dei negozi fisici possono essere aperte in remoto. valore pvPara : il parametro pvPara punta a una stringa Unicode con terminazione Null che contiene sia il nome dell'archivio di sistema che i nomi fisici. |
|
Inizializza l'archivio con certificati, CRL e CCL da un messaggio firmato PKCS #7 codificato. Il parametro dwEncodingType deve specificare i tipi di codifica da usare sia con i messaggi che con i certificati.
valore pvPara : il parametro pvPara punta a una struttura CRYPT_DATA_BLOB che rappresenta il messaggio codificato. |
|
Inizializza l'archivio con il contenuto di un pacchetto PKCS #12 .
Se il pacchetto PKCS #12 è protetto con una password NULL o vuota, questa funzione avrà esito positivo nell'apertura dell'archivio. A partire da Windows 8 e Windows Server 2012, se la password incorporata nel pacchetto PFX è stata protetta in un'entità Active Directory (AD) e l'utente corrente, come membro di tale entità, dispone dell'autorizzazione per decrittografare la password, questa funzione avrà esito positivo nell'apertura dell'archivio. Per altre informazioni, vedere il parametro pvPara e il flag PKCS12_PROTECT_TO_DOMAIN_SIDS della funzione PFXExportCertStoreEx . È possibile proteggere le password PFX in un'entità di Active Directory a partire da Windows 8 e Windows Server 2012. pvPara value: il parametro pvPara punta a una struttura CRYPT_DATA_BLOB che rappresenta il pacchetto PKCS #12. |
|
Inizializza l'archivio con certificati, CRL e CRL da una sottochiave del Registro di sistema.
Questo provider apre o crea le sottochiavi del Registro di sistema Certificati, CRL e CRL nella chiave passata in pvPara. La chiave di input non viene chiusa dal provider. Prima di restituire, il provider apre la propria copia della chiave passata in pvPara. Se CERT_STORE_READONLY_FLAG è impostato nella parola bassa di dwFlags, le sottochiavi del Registro di sistema vengono aperte usando RegOpenKey con KEY_READ_ACCESS. In caso contrario, le sottochiavi del Registro di sistema vengono create usando RegCreateKey con KEY_ALL_ACCESS. Tutte le modifiche apportate al contenuto dell'archivio aperto vengono immediatamente rese persistenti nel Registro di sistema. Tuttavia, se CERT_STORE_READONLY_FLAG è impostato nella parola bassa di dwFlags, qualsiasi tentativo di aggiungere al contenuto dell'archivio o di modificare la proprietà di un contesto genera un errore con GetLastError che restituisce il codice E_ACCESSDENIED. pvPara value: il parametro pvPara contiene l'handle di una chiave del Registro di sistema aperta. |
|
Inizializza l'archivio con certificati, CCL e DLL da una posizione di memoria contenente un archivio serializzato.
valore pvPara : il parametro pvPara punta a una struttura CRYPT_DATA_BLOB che contiene il BLOB di memoria serializzato. |
|
Attualmente non utilizzato. |
|
Inizializza l'archivio con certificati, CCL e CTL dall'archivio di sistema specificato.
L'archivio di sistema è un archivio di raccolta logico e logico costituito da uno o più archivi fisici. Un archivio fisico associato a un archivio di sistema viene registrato con la funzione CertRegisterPhysicalStore . Dopo l'apertura dell'archivio di sistema, tutti gli archivi fisici associati vengono aperti anche dalle chiamate a CertOpenStore e vengono aggiunti alla raccolta di archivi di sistema usando la funzione CertAddStoreToCollection . La parola alta di dwFlags indica la posizione dell'archivio di sistema, in genere impostata su CERT_SYSTEM_STORE_CURRENT_USER. Per informazioni dettagliate sulle posizioni del Registro di sistema, vedere dwFlags più avanti in questo argomento e percorsi di System Store. Alcune posizioni dell'archivio di sistema possono essere aperte in remoto; per altre informazioni, vedere Percorsi dell'archivio di sistema. valore pvPara : il parametro pvPara punta a una stringa ANSI con terminazione null contenente un nome dell'archivio di sistema, ad esempio "My" o "Root". |
|
Uguale a CERT_STORE_PROV_SYSTEM_A.
valore pvPara : il parametro pvPara punta a una stringa Unicode con terminazione null contenente un nome dell'archivio di sistema, ad esempio "My" o "Root". |
|
Inizializza l'archivio con certificati, CCL e CTL da un archivio del Registro di sistema fisico. L'archivio fisico non viene aperto come archivio raccolta. Le enumerazioni e le ricerche passano attraverso solo i certificati, gli elenchi di controllo di accesso e le dll in tale archivio fisico.
La parola alta di dwFlags indica la posizione dell'archivio di sistema, in genere impostata su CERT_SYSTEM_STORE_CURRENT_USER. Per altre informazioni, vedere dwFlags più avanti in questo argomento. Alcune posizioni dell'archivio di sistema possono essere aperte in remoto; per altre informazioni, vedere Percorsi dell'archivio di sistema. valore pvPara : il parametro pvPara punta a una stringa ANSI con terminazione null contenente un nome dell'archivio di sistema, ad esempio "My" o "Root". |
|
Uguale a CERT_STORE_PROV_SYSTEM_REGISTRY_A.
valore pvPara : il parametro pvPara punta a una stringa Unicode con terminazione null contenente un nome dell'archivio di sistema, ad esempio "My" o "Root". |
[in] dwEncodingType
Specifica il tipo di codifica del certificato e il tipo di codifica dei messaggi. La codifica viene usata solo quando il parametro dwSaveAs della funzione CertSaveStore contiene CERT_STORE_SAVE_AS_PKCS7. In caso contrario, il parametro dwMsgAndCertEncodingType non viene usato.
Questo parametro è applicabile solo quando il tipo di provider CERT_STORE_PROV_MSG, CERT_STORE_PROV_PKCS7 o CERT_STORE_PROV_FILENAME viene specificato nel parametro lpszStoreProvider . Per tutti gli altri tipi di provider, questo parametro è inutilizzato e deve essere impostato su zero.
Questo parametro può essere una combinazione di uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Specifica la codifica dei messaggi PKCS #7. |
|
Specifica la codifica del certificato X.509. |
[in] hCryptProv
Questo parametro non viene usato e deve essere impostato su NULL.
Windows Server 2003 e Windows XP: Handle a un provider di crittografia. Il passaggio di NULL per questo parametro causa l'uso di un provider predefinito appropriato. È consigliabile usare il provider predefinito. Il provider di crittografia predefinito o specificato viene usato per tutte le funzioni di archiviazione che verificano la firma di un certificato soggetto o CRL. Il tipo di dati di questo parametro è HCRYPTPROV.
[in] dwFlags
Questi valori sono costituiti da valori con parole elevate e di parole basse combinate usando un'operazione BIT-OR .
La parte bassa di dwFlags controlla un'ampia gamma di caratteristiche generali dell'archivio certificati aperto. Questa parte può essere usata con tutti i tipi di provider di archiviazione. La parte bassa di dwFlags può essere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Usare i privilegi di SE_BACKUP_NAME e SE_RESTORE_NAME del thread per aprire archivi di sistema basati su file o registro. Se il thread non dispone di questi privilegi, questa funzione deve non riuscire con un errore di accesso negato. |
|
Se non esiste un nuovo archivio, viene creato un nuovo archivio. La funzione ha esito negativo se l'archivio esiste già.
Se non CERT_STORE_OPEN_EXISTING_FLAG né CERT_STORE_CREATE_NEW_FLAG è impostato, un archivio viene aperto se esiste o viene aperto e aperto se non esiste già. |
|
Rinviare la chiusura del provider dell'archivio fino a quando tutti i certificati, gli elenchi di controllo di accesso o gli elenchi di controllo di accesso ottenuti dall'archivio non sono più in uso. L'archivio viene effettivamente chiuso quando l'ultimo certificato, CRL o CTL ottenuto dall'archivio viene liberato. Tutte le modifiche apportate alle proprietà di questi certificati, CCL e CTLs, anche dopo la chiamata a CertCloseStore, vengono mantenute.
Se questo flag non è impostato e i certificati, gli elenchi di controllo di accesso o gli elenchi di controllo di dominio ottenuti dall'archivio sono ancora in uso, tutte le modifiche apportate alle proprietà di tali certificati, ccl e elenchi di controllo non verranno mantenute. Se questa funzione viene chiamata con CERT_CLOSE_STORE_FORCE_FLAG, CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG viene ignorata. Quando questo flag è impostato e viene passato un valore di parametro hCryptProv diverso da NULL, tale provider continuerà a essere usato anche dopo la chiamata a questa funzione. |
|
L'archivio viene eliminato invece di essere aperto. Questa funzione restituisce NULL sia per l'esito positivo che per l'errore dell'eliminazione. Per determinare l'esito positivo dell'eliminazione, chiamare GetLastError, che restituisce zero se l'archivio è stato eliminato e un valore diverso da zero se non è stato eliminato. |
|
In genere, un'enumerazione di tutti i certificati nell'archivio ignorerà qualsiasi certificato con il set di proprietà CERT_ARCHIVED_PROP_ID . Se questo flag è impostato, un'enumerazione dei certificati nell'archivio conterrà tutti i certificati nell'archivio, inclusi quelli con la proprietà CERT_ARCHIVED_PROP_ID . |
|
Aprire l'archivio con il set massimo di autorizzazioni consentite. Se questo flag viene specificato, gli archivi del Registro di sistema vengono prima aperti con l'accesso in scrittura e, se non riesce, vengono riaperti con accesso di sola lettura. |
|
Questo flag non viene usato quando il parametro hCryptProv è NULL. Questo flag è valido solo quando un handle CSP non NULL viene passato come parametro hCryptProv . L'impostazione di questo flag impedisce la versione automatica di un CSP non definito quando l'archivio certificati viene chiuso. |
|
Aprire solo un archivio esistente. Se l'archivio non esiste, la funzione ha esito negativo. |
|
Aprire l'archivio in modalità di sola lettura. Qualsiasi tentativo di modifica del contenuto dell'archivio genera un errore. Quando questo flag è impostato e viene usato un provider di archivi basato sul Registro di sistema, le sottochiave del Registro di sistema vengono aperte usando RegOpenKey con KEY_READ_ACCESS. In caso contrario, le sottochiavi del Registro di sistema vengono create usando RegCreateKey con KEY_ALL_ACCESS. |
|
Se questo flag è supportato, il provider imposta la proprietà CERT_STORE_LOCALIZED_NAME_PROP_ID dell'archivio. Il nome localizzato può essere recuperato chiamando la funzione CertGetStoreProperty con dwPropID impostata su CERT_STORE_LOCALIZED_NAME_PROP_ID. Questo flag è supportato per i provider di tipi CERT_STORE_PROV_FILENAME, CERT_STORE_PROV_SYSTEM, CERT_STORE_PROV_SYSTEM_REGISTRY eCERT_STORE_PROV_PHYSICAL_W. |
|
Quando si apre un archivio più volte, è possibile impostare questo flag per garantire un utilizzo efficiente della memoria riutilizzando la memoria per le parti codificate di un certificato, una CRL o un contesto CTL nelle istanze aperte degli archivi. |
|
Elenchi di identificatori di chiave esistono all'interno di CurrentUser e LocalMachine. Questi identificatori di chiave hanno proprietà molto simili alle proprietà dei certificati. Se la CERT_STORE_UPDATE_KEYID_FLAG è impostata, per ogni identificatore di chiave nel percorso dell'archivio con una proprietà CERT_KEY_PROV_INFO_PROP_ID , tale proprietà viene aggiornata automaticamente dalla proprietà dell'identificatore di chiave CERT_KEY_PROV_INFO_PROP_ID o dalla CERT_KEY_IDENTIFIER_PROP_ID del certificato correlato a tale identificatore di chiave. |
I tipi di provider CERT_STORE_PROV_SYSTEM, CERT_STORE_PROV_SYSTEM_REGISTRY e CERT_STORE_PROV_PHYSICAL usano le parole elevate seguenti di dwFlags per specificare i percorsi del Registro di sistema dell'archivio di sistema:
CERT_SYSTEM_STORE_CURRENT_SERVICE
CERT_SYSTEM_STORE_CURRENT_USER
CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY
CERT_SYSTEM_STORE_LOCAL_MACHINE
CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE
CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY
CERT_SYSTEM_STORE_SERVICES
CERT_SYSTEM_STORE_USERS
Per impostazione predefinita, un percorso dell'archivio di sistema viene aperto rispetto al HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE o HKEY_USERS chiave predefinita del Registro di sistema. Per altre informazioni, vedere Percorsi dell'archivio di sistema.
I flag ad alta parola seguenti sostituiscono questo comportamento predefinito.
Valore | Significato |
---|---|
|
Se impostato, pvPara deve contenere un puntatore a una struttura CERT_SYSTEM_STORE_RELOCATE_PARA anziché a una stringa. La struttura indica sia il nome dell'archivio che il relativo percorso nel Registro di sistema. |
|
Per impostazione predefinita, quando viene aperto l'archivio CurrentUser "Root", tutte le radici SystemRegistry non presenti nell'elenco radice protetto vengono eliminate dalla cache prima che questa funzione restituisca. Quando questo flag è impostato, questo valore predefinito viene sottoposto a override e tutte le radici in SystemRegistry vengono restituite e non viene eseguita alcuna verifica dell'elenco radice protetto. |
Il provider di CERT_STORE_PROV_REGISTRY utilizza i flag di parola alta seguenti.
Valore | Significato |
---|---|
|
pvPara contiene un handle per una chiave del Registro di sistema in un computer remoto. Per accedere a una chiave del Registro di sistema in un computer remoto, è necessario impostare le autorizzazioni di sicurezza nel computer remoto per consentire l'accesso. Per altre informazioni, vedere la sezione Osservazioni. |
|
Il provider di CERT_STORE_PROV_REG salva certificati, CRL e CCL in una singola sottochiave dell'archivio serializzato anziché eseguire l'operazione di salvataggio predefinita. Il valore predefinito è che ogni certificato, CRL o CTL viene salvato come sottochiave separata del Registro di sistema nella sottochiave appropriata.
Questo flag viene usato principalmente per gli archivi scaricati dal modello di criteri di gruppo (GPT), ad esempio gli archivi CurrentUserGroupPolicy e LocalMachineGroupPolicy. Quando CERT_REGISTRY_STORE_SERIALIZED_FLAG è impostato, le aggiunte, le eliminazioni o le modifiche alle proprietà dell'archivio non vengono mantenute finché non viene eseguita una chiamata a CertCloseStore o CertControlStore usando CERT_STORE_CTRL_COMMIT. |
I tipi di provider CERT_STORE_PROV_FILE e CERT_STORE_PROV_FILENAME usano i flag di parola alta seguenti.
Valore | Significato |
---|---|
|
L'impostazione di questo flag esegue il commit di eventuali aggiunte all'archivio o di eventuali modifiche apportate alle proprietà dei contesti nell'archivio nell'archivio file quando viene chiamato CertCloseStore o quando viene chiamato CertControlStore con CERT_STORE_CONTROL_COMMIT.
CertOpenStore ha esito negativo con E_INVALIDARG se sia CERT_FILE_STORE_COMMIT_ENABLE che CERT_STORE_READONLY_FLAG sono impostati in dwFlags. |
Il tipo di provider CERT_STORE_PROV_LDAP utilizza i flag di parola alta seguenti.
Valore | Significato |
---|---|
|
Esegue una ricerca DNS solo record A sull'URL denominato nel parametro pvPara . Ciò impedisce la generazione di false query DNS durante la risoluzione dei nomi host URL. Usare questo flag quando si passa un nome host anziché un nome di dominio per il parametro pvPara . |
|
Usare questo flag per usare una sessione LDAP esistente. Quando si specifica questo flag, il parametro pvPara è l'indirizzo di una struttura CERT_LDAP_STORE_OPENED_PARA che contiene informazioni sulla sessione LDAP da usare. |
|
Per garantire l'integrità richiesta da alcune applicazioni, firmare digitalmente tutto il traffico LDAP da e verso un server LDAP usando il protocollo di autenticazione Kerberos. |
|
Usare questo flag con il flag CERT_LDAP_STORE_OPENED_FLAG per fare in modo che la sessione LDAP non venga associata quando l'archivio viene chiuso. Il sistema annulla l'associazione della sessione LDAP usando la funzione ldap_unbind quando l'archivio viene chiuso. |
[in] pvPara
Valore a 32 bit che può contenere informazioni aggiuntive per questa funzione. Il contenuto di questo parametro dipende dal valore di lpszStoreProvider e da altri parametri.
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce un handle all'archivio certificati. Al termine dell'uso dell'archivio, rilasciare l'handle chiamando la funzione CertCloseStore .
Se la funzione ha esito negativo, restituisce NULL. Per informazioni sugli errori estesi, chiamare GetLastError.
Commenti
Un archivio di sistema è una raccolta costituita da uno o più archivi di pari livello fisici. Per ogni archivio di sistema sono disponibili archivi fisici di pari livello predefiniti. Dopo aver aperto un archivio di sistema, ad esempio "My" in CERT_SYSTEM_STORE_CURRENT_USER, CertOpenStore viene chiamato per aprire tutti gli archivi fisici nella raccolta di archivi di sistema. Ognuno di questi archivi fisici viene aggiunto alla raccolta di archivi di sistema usando la funzione CertAddStoreToCollection . Tutti i certificati, i CRL e gli elenchi di scopi consentiti in tali archivi fisici sono disponibili tramite la raccolta di archivi di sistema logici.
I percorsi di archiviazione di sistema seguenti possono essere aperti in remoto:
- CERT_SYSTEM_STORE_LOCAL_MACHINE
- CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY
- CERT_SYSTEM_STORE_SERVICES
- CERT_SYSTEM_STORE_USERS
I percorsi dell'archivio di sistema vengono aperti in remoto anteponendo il nome dell'archivio nella stringa passata a pvPara con il nome del computer. Di seguito sono riportati alcuni esempi di nomi di archivio di sistema remoti:
- ComputerName\CA
- \\ComputerName\CA
- ComputerName\ServiceName\Trust
- \\ComputerName\ServiceName\Trust
Per altre informazioni sugli archivi di sistema, vedere Percorsi dell'archivio di sistema.
Per altre informazioni sugli archivi di cui viene eseguita la migrazione automatica, vedere Migrazione dell'archivio certificati.
Esempio
L'esempio seguente mostra l'apertura di diversi archivi certificati di diversi tipi di provider di archivi. Nell'esempio viene utilizzata la funzione CreateMyDACL , definita nell'argomento Creazione di un daCL , per assicurarsi che il file aperto venga creato con un DACL appropriato. Per altri esempi di apertura di altri tipi di provider di archivi, vedere Codice C di esempio per l'apertura di archivi certificati.
//-------------------------------------------------------------------
// Open a system store, in this case, the My store.
HCERTSTORE hSysStore = NULL;
if(hSysStore = CertOpenStore(
CERT_STORE_PROV_SYSTEM, // The store provider type
0, // The encoding type is
// not needed
NULL, // Use the default HCRYPTPROV
CERT_SYSTEM_STORE_CURRENT_USER, // Set the store location in a
// registry location
L"MY" // The store name as a Unicode
// string
))
{
printf("The system store was created successfully.\n");
}
else
{
printf("An error occurred during creation "
"of the system store!\n");
exit(1);
}
// Other common system stores include "Root", "Trust", and "Ca".
//-------------------------------------------------------------------
// Open a memory store.
HCERTSTORE hMemStore = NULL;
if(hMemStore = CertOpenStore(
CERT_STORE_PROV_MEMORY, // The memory provider type
0, // The encoding type is not needed
NULL, // Use the default HCRYPTPROV
0, // Accept the default dwFlags
NULL // pvPara is not used
))
{
printf("The memory store was created successfully.\n");
}
else
{
printf("An error occurred during creation "
"of the memory store!\n");
exit(1);
}
//-------------------------------------------------------------------
// Open a read-only store from disk.
HANDLE hFile = NULL;
HCERTSTORE hFileStore = NULL;
LPCSTR pszFileName = "TestStor2.sto";
SECURITY_ATTRIBUTES sa; // For DACL
// Create a DACL to use when opening the file.
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
// Call function to set the DACL. The DACL is set in the
// SECURITY_ATTRIBUTES lpSecurityDescriptor member.
if (!CreateMyDACL(&sa))
{
// Error encountered; generate message and exit.
printf("Failed CreateMyDACL.\n");
exit(1);
}
// Obtain the file handle of an existing file.
if (hFile = CreateFile(
pszFileName, // The file name
GENERIC_READ|GENERIC_WRITE, // Access mode: Read from and
// write to this file
0, // Share mode
&sa, // Uses the DACL created
// previously
OPEN_ALWAYS, // How to create
FILE_ATTRIBUTE_NORMAL, // File attributes
NULL)) // Template
{
printf("The file was opened successfully.\n");
}
else
{
printf("An error occurred during opening of the file!\n");
exit(1);
}
//-------------------------------------------------------------------
// This file can contain data before the store itself.
// At this point, read and use data in the open file that precedes
// the serialized certificate store data.
// To open the certificate store, the file pointer must
// be placed at the beginning of the certificate store data.
//-------------------------------------------------------------------
// Open the store.
if(hFileStore = CertOpenStore(
CERT_STORE_PROV_FILE, // Load certificates from a file
0, // Encoding type not used
NULL, // Use the default HCRYPTPROV
CERT_STORE_READONLY_FLAG, // Read-only store
hFile // The handle for the open file
// that is the source of the
// certificates
))
{
printf("The file store was created successfully.\n");
}
else
{
printf("An error occurred during creation of the file store!\n");
exit(1);
}
//-------------------------------------------------------------------
// After processing, close the certificate stores and the file.
if(CertCloseStore(
hSysStore,
CERT_CLOSE_STORE_CHECK_FLAG))
{
printf("The system store was closed successfully.\n");
}
else
{
printf("An error occurred during closing of the "
"system store.\n");
}
if(CertCloseStore(
hMemStore,
CERT_CLOSE_STORE_CHECK_FLAG))
{
printf("The memory store was closed successfully.\n");
}
else
{
printf("An error occurred during closing of the "
"memory store.\n");
}
if(CertCloseStore(
hFileStore,
CERT_CLOSE_STORE_CHECK_FLAG))
{
printf("The file store was closed successfully.\n");
}
else
{
printf("An error occurred during closing of the file store.\n");
}
if(CloseHandle(hFile))
{
printf("The file was closed successfully.\n");
}
else
{
printf("An error occurred during closing of the file.\n");
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Crypt32.lib |
DLL | Crypt32.dll |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per