這個函數
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(
HCERTSTORE hCertStore,
DWORD dwCertEncodingType,
DWORD dwFindFlags,
DWORD dwFindType,
const void* pvFindPara,
PCCERT_CONTEXT pPrevCertContext
);
在證書管理裡查詢證書是否安裝
dwFindType
指定正在進行的搜尋型別。搜尋型別確定數據型別、內容和pvFindPara的使用。
每個dwFindType值以及pvFindPara參數的相應數據型別。
const void* pvFindPara 查詢的參數值,可以是結構
CERT_FIND_ISSUER_NAME
證書頒發者姓名
證書名稱BLOB結構 ,因爲是結構所以不方便查詢
搜尋整個頒發者名稱與CERT_name_BLOB中的名稱完全匹配的證書。搜尋僅限於與dwCertEncodingType匹配的證書。
CERT_FIND_ISSUER_STR
證書查詢頒發者
以空結尾的寬(Unicode)字串 ,方便查詢
搜尋包含指定頒發者名稱字串的證書。證書的頒發者成員使用格式爲CERT_SIMPLE_name_STR的適當格式CertNameToStr轉換爲適當型別的名稱字串。然後執行不區分大小寫的字串內子字串匹配。設定此值後,搜尋將限於編碼型別與dwCertEncodingType匹配的證書。
CERT_FIND_SUBJECT_NAME
證書查詢主題名稱
證書名稱BLOB結構 ,因爲是結構所以不方便查詢
搜尋整個使用者名稱與CERT_name_BLOB結構中的名稱完全匹配的證書。搜尋僅限於與dwCertEncodingType值匹配的證書。
CERT_FIND_SUBJECT_STR
證書查詢主題
以空結尾的寬(Unicode)字串 ,方便查詢
搜尋包含指定使用者名稱字串的證書。使用格式爲CERT_SIMPLE_name_STR的適當格式將證書的subject成員轉換爲適當型別的名稱字串。然後執行不區分大小寫的字串內子字串匹配。設定此值後,搜尋將限於編碼型別與dwCertEncodingType匹配的證書。
if (pTargetCert = CertFindCertificateInStore(
m_hSystemStore, // 證書庫控制代碼,系統證書庫
MY_ENCODING_TYPE, // 編碼型別
0, // 不需要設定標誌位
CERT_FIND_SUBJECT_STR_A, // 查詢標準爲:證書客體名稱爲szSubjectName
certName.c_str(), //szSubjectName, // 證書客體名稱
pTargetCert)) // 上次查詢到的證書, 第一次查詢,從證書庫開始位置查詢
{
//printf("找到了此證書. \n");
}
else
{
//printf("未能找到所需的證書.");
}