ICertConfig::GetConfig 方法 (certcli.h)

GetConfig 方法會擷取憑證服務伺服器的組態字串。 此方法最初是在 ICertConfig 介面中定義。

組態字串是以反斜杠 (\) 分隔的伺服器名稱和 證書頒發機構單位 名稱;例如: ServerName\CAName。 此組態字串可用來明確參考特定的憑證服務伺服器。 如需詳細資訊,請參閱<備註>。

語法

HRESULT GetConfig(
  [in]  LONG Flags,
  [out] BSTR *pstrOut
);

參數

[in] Flags

值,指定要使用的證書頒發機構單位。 此參數可以是下列其中一個值。

意義
CC_DEFAULTCONFIG
0x00000000
擷取預設證書頒發機構單位。
CC_FIRSTCONFIG
0x00000002
傳回第一個證書頒發機構單位。
CC_LOCALACTIVECONFIG
0x00000004
如果本機證書頒發機構單位正在執行,則擷取該授權單位。
CC_LOCALCONFIG
0x00000003
擷取本機證書頒發機構單位。
CC_UIPICKCONFIG
0x00000001
顯示允許使用者選取證書頒發機構單位的使用者介面。
CC_UIPICKCONFIGSKIPLOCALCA
0x00000005
顯示允許使用者選取證書頒發機構單位的使用者介面。 UI 會排除任何本機證書頒發機構單位。 當次級證書頒發機構單位證書頒發機構單位憑證要求提交至目前證書頒發機構單位以外的證書頒發機構單位時,此排除專案在次級證書頒發機構單位憑證更新期間很有用。

[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

另請參閱

CCertConfig

ICertConfig

ICertView2::OpenConnection