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 |
星号 | * | !002a |
反斜杠 | \ | !005c |
左大括号 | { | !007b |
右大括号 | } | !007d |
左中括号 | [ | !005b |
右中括号 | ] | !005d |
西文插入记号 | ^ | !005e |
冒号 | : | !003a |
逗号 | , | !002c |
等于号 | = | !003d |
感叹 号 | ! | !0021 |
重音严重 | ` | !0060 |
大于号 | > | !003e |
小于号 | < | !003c |
数字符号 | # | !0023 |
左括号 | ( | !0028 |
右括号 | ) | !0029 |
百分比 | % | !0025 |
管道 | | | !007c |
正号 | + | !002b |
问号 | ? | !003f |
引号 | " | !0022 |
分号 | ; | !003b |
左斜线 | / | !002f |
任何非打印字符和所有不是 7 位的 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) |
Library | Certidl.lib |
DLL | Certcli.dll |