CertOpenSystemStoreA 函式 (wincrypt.h)
CertOpenSystemStore函式是簡化的函式,可開啟最常見的系統憑證存放區。 若要以更複雜的需求開啟憑證存放區,例如檔案型或以記憶體為基礎的存放區,請使用 CertOpenStore。
語法
HCERTSTORE CertOpenSystemStoreA(
[in] HCRYPTPROV_LEGACY hProv,
[in] LPCSTR szSubsystemProtocol
);
參數
[in] hProv
不使用此參數,而且應該設定為 0。
Windows Server 2003 和 Windows XP:密碼編譯服務提供者的控制碼, (CSP) 。 將 hProv 設定為 0 以使用預設 CSP。 如果 hProv 不是 0,則必須是使用 CryptAcquireCoNtext 函式所建立的 CSP 控制碼。此參數的資料類型為 HCRYPTPROV。
[in] szSubsystemProtocol
命名系統存放區的字串。 如果此參數中提供的系統存放區名稱不是現有系統存放區的名稱,將會建立及使用新的系統存放區。 CertEnumSystemStore 可用來列出現有系統存放區的名稱。 下表列出一些範例系統存放區。
值 | 意義 |
---|---|
|
憑證授權單位單位 憑證。 |
|
保存具有相關聯私密金鑰之憑證的憑證存放區。 |
|
根憑證。 |
|
軟體發行者憑證。 |
傳回值
如果函式成功,函式會傳回憑證存放區的控制碼。
如果函式失敗,它會傳回 Null。 如需擴充錯誤資訊,請呼叫 GetLastError。
備註
只有目前的使用者憑證可以使用此方法存取,而不是本機電腦存放區。
系統存放區開啟之後,所有標準憑證存放區函式都可以用來操作憑證。
使用之後,應該使用 CertCloseStore關閉存放區。
如需自動移轉之存放區的詳細資訊,請參閱 憑證存放區移轉。
範例
下列範例顯示用來開啟最常見系統憑證存放區的簡化方法。 如需使用此函式的另一個範例,請參閱 範例 C 程式:憑證存放區作業。
//--------------------------------------------------------------------
// Declare and initialize variables.
HCERTSTORE hSystemStore; // system store handle
//--------------------------------------------------------------------
// Open the CA system certificate store. The same call can be
// used with the name of a different system store, such as My or Root,
// as the second parameter.
if(hSystemStore = CertOpenSystemStore(
0,
"CA"))
{
printf("The CA system store is open. Continue.\n");
}
else
{
printf("The CA system store did not open.\n");
exit(1);
}
// Use the store as needed.
// ...
// When done using the store, close it.
if(!CertCloseStore(hSystemStore, 0))
{
printf("Unable to close the CA system store.\n");
exit(1);
}
注意
wincrypt.h 標頭會將 CertOpenSystemStore 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | Windows |
標頭 | wincrypt.h |
程式庫 | Crypt32.lib |
DLL | Crypt32.dll |