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 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |
連結庫 | Crypt32.lib |
DLL | Crypt32.dll |