ICertConfig::GetConfig 方法 (certcli.h)
GetConfig 方法會擷取憑證服務伺服器的組態字串。 此方法最初是在 ICertConfig 介面中定義。
組態字串是以反斜杠 (\) 分隔的伺服器名稱和 證書頒發機構單位 名稱;例如: ServerName\CAName。 此組態字串可用來明確參考特定的憑證服務伺服器。 如需詳細資訊,請參閱<備註>。
語法
HRESULT GetConfig(
[in] LONG Flags,
[out] BSTR *pstrOut
);
參數
[in] Flags
值,指定要使用的證書頒發機構單位。 此參數可以是下列其中一個值。
[out] pstrOut
包含組態的 BSTR 指標。 當您完成設定時,請呼叫 SysFreeString 函式以釋放 pbstrOut。
傳回值
C++
如果方法成功,方法會傳回S_OK。如果方法失敗,它會傳回 HRESULT 值,指出錯誤。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值。
VB
傳回值是包含組態的字串。備註
證書頒發機構單位 (CA) 此函式傳回之組態字串的名稱部分是憑證服務安裝程式期間輸入的確切文字。 請注意,此文字可能與檔名中找到的 CA 名稱形式不同 (,例如證書 吊銷清單) 或登錄機碼中。 這是因為檔名和登錄機碼使用 CA 名稱的 清理 版本。
必須清除 CA 名稱的程式,才能移除檔名、登錄機碼名稱或辨別名稱值不合法的字元,或基於憑證服務的特定原因而不合法。 在清理程式中,一般名稱中的任何不合法的字元會轉換成格式為五個字元的表示法 !xxxx,其中 ! 做為逸出字元, 而xxxx 代表四個十六進位數位,可唯一識別要轉換的字元。
例如,Active Directory 中的辨別名稱不允許數位符號 (#) 。 如果在安裝期間輸入的 CA 名稱是 #YourName,則清理的 CA 名稱會是 !0023YourName。
如果在安裝期間針對 CA 的一般名稱輸入下列字元,則會轉換成 !清理程式期間的xxxx格式。 此清單會隨時變動。
名稱 | 字元 | !xxxx 格式的值 |
---|---|---|
& 符號 | & | !0026 |
單引號 | ' | !0027 |
Asterisk | * | !002a |
反斜線 | \ | !005c |
左大括弧 | { | !007b |
右大括弧 | } | !007d |
左方括號 | [ | !005b |
右方括號 | ] | !005d |
插入點 | ^ | !005e |
冒號 | : | !003a |
Comma (逗號) | , | !002c |
等號 | = | !003d |
感歎 號 | ! | !0021 |
輔色 | ` | !0060 |
大於號 | > | !003e |
小於號 | < | !003c |
數字符號 | # | !0023 |
左括弧 | ( | !0028 |
右括弧 | ) | !0029 |
百分比 | % | !0025 |
Pipe | | | !007c |
加號 | + | !002b |
問號 | ? | !003f |
引號 | " | !0022 |
分號 | ; | !003b |
斜線符號 | / | !002f |
任何非列印字元和不是七位的所有 Unicode 字元也會轉換成 !xxxx 格式。
當 64 個字元的目錄服務相對辨別名稱 (RDN) 時,就會產生清理的簡短名稱。 清理的簡短名稱是由已截斷的清理名稱所組成,並以完整清理名稱的 哈希 附加。 清理的簡短名稱會保留一些 64 個字元,以包含證書吊銷 清單 , (CRL) 後綴,例如 (123) 。
這個方法所傳回之組態字串的證書頒發機構單位名稱部分是安裝期間輸入的原始文字。 請注意,需要證書頒發機構單位名稱做為參數的憑證服務方法會接受原先輸入的證書頒發機構單位名稱。 例如,針對證書頒發機構單位名稱 #YourName,
ICertView2::OpenConnection 方法接受 #YourName 作為參數的證書頒發機構單位部分。
範例
下列範例示範如何使用這個方法來擷取預設證書頒發機構單位組態字串。
ICertConfig2 * pConfig = NULL;
BSTR bstrConfig = NULL; //Contains CA configuration name
HRESULT hr;
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr))
{
printf("Failed CoInitializeEx - [%x]\n", hr);
goto error;
}
// Create an instance of the CertConfig object.
hr = CoCreateInstance( CLSID_CCertConfig,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICertConfig2,
(void **)&pConfig);
if (FAILED(hr))
{
printf("Failed CoCreateInstance - pConfig [%x]\n", hr);
goto error;
}
// Retrieve the default CA configuration string.
hr = pConfig->GetConfig(CC_DEFAULTCONFIG, &bstrConfig);
if (FAILED(hr))
{
printf("Failed GetConfig - [%x]\n", hr);
goto error;
}
else
printf("GetConfig returned: %ws\n", bstrConfig );
error:
// Done processing.
if (pConfig)
pConfig->Release();
if (bstrConfig)
SysFreeString(bstrConfig);
CoUninitialize();
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 都不支援 |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | certcli.h (包含 Certsrv.h) |
程式庫 | Certidl.lib |
Dll | Certcli.dll |