Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › ICertAdmin2

ICertAdmin2

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDf7c3ac41-b8ce-4fb4-aa58-3d1dc0e36b39継承元ICertAdmin呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl17

公式ドキュメント

適切に承認されたクライアントに管理機能を提供します。

メソッド 11

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 17 HRESULT PublishCRLs(LPWSTR strConfig, DOUBLE Date, INT CRLFlags)

証明機関 (CA) の証明書失効リスト (CRL) を発行します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力した証明機関のコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、PublishCRLs は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
DateDOUBLEinCRL の次回更新値を GMT 時刻で指定します。 Date が 0 以外の場合、CRL の次回更新値は Date になります(ただし 証明書サービスによって適用される丸めまたは上限の制限を受けます)。Date が 0 の場合、CRL の次回更新値は既定の CRL 発行期間から計算されます。
CRLFlagsINTin

CRL の発行オプションを指定する値です。この値は、次のフラグのビットごとの組み合わせにできます。

意味
CA_CRL_BASE
ベース CRL が発行されます。CA_CRL_REPUBLISH が設定されている場合は、最新のベース CRL が再発行されます。
CA_CRL_DELTA
差分 CRL が発行されます。CA_CRL_REPUBLISH が設定されている場合は、最新の差分 CRL が再発行されます。CA が差分 CRL の発行を有効にしていない場合、このフラグを使用するとエラーになります。
CA_CRL_REPUBLISH
CA_CRL_BASE または CA_CRL_DELTA で指定された最新のベースまたは差分 CRL が再発行されます。配布ポイントの CRL が既に最新の CRL である場合、CA は CRL 配布ポイントへの CRL の再発行を行いません。

解説(Remarks)

CA がベースおよび差分 CRL を正常に発行したかどうかを確認するには、それぞれ CR_PROP_BASECRLPUBLISHSTATUS および CR_PROP_DELTACRLPUBLISHSTATUS プロパティ識別子を指定して ICertAdmin2::GetCAProperty を呼び出します。

次の例は CRL の発行を示しています。

    DATE ExpDate;  // CRL expiration date.
    SYSTEMTIME st;
    BSTR bstrCA = NULL;

    //  Set the CRL expiration date to noon, July 1, 2001.
    //  Zero out values first (avoids setting minutes,
    //  seconds, and so on).
    memset(&st, 0, sizeof(SYSTEMTIME));
    st.wYear = 2001;
    st.wMonth = 7;     // July
    st.wDay = 1;       // first day of month
    st.wHour = 12;     // noon

    //  Place the date in required format.
    if (!SystemTimeToVariantTime(&st, &ExpDate))
    {
        printf("Unable to convert time\n");
        goto error;
    }

    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed\n");
        goto error;
    }

    //  Publish the CRL.
    //  pCertAdmin is a previously instantiated ICertAdmin object.
    hr = pCertAdmin2->PublishCRLs(bstrCA,
                              ExpDate,
                              CA_CRL_BASE);
    if (FAILED(hr))
    {
        printf("Failed PublishCRLs [%x]\n", hr);
        goto error;
    }
    else
        printf("PublishCRLs succeeded\n");
    //  Done.

error:

    //  Free resources.
    if (bstrCA)
        SysFreeString(bstrCA);
vtbl 18 HRESULT GetCAProperty(LPWSTR strConfig, INT PropId, INT PropIndex, INT PropType, INT Flags, VARIANT* pvarPropertyValue)

証明機関 (CA) のプロパティ値を取得します。(ICertAdmin2.GetCAProperty)

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、GetCAProperty は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
PropIdINTin

次のいずれかのプロパティ識別子を指定します。

意味
CR_PROP_ADVANCEDSERVER
プロパティのデータ型: Long

CA が Advanced Server で実行されているかどうかを指定します。

CR_PROP_BASECRL
プロパティのデータ型: Binary、インデックス付き

CA の完全な (ベース) 証明書失効リスト (CRL)。

CR_PROP_BASECRLPUBLISHSTATUS
プロパティのデータ型: Long、インデックス付き

ベース CRL の発行状態。詳細については「解説」を参照してください。

CR_PROP_CABACKWARDCROSSCERT
プロパティのデータ型: Binary、インデックス付き

後方クロス証明書。後方クロス証明書は、更新時に CA が自身に対して発行し、CA の新しいキーで署名された証明書です。後方クロス証明書は、新しい CA 証明書の機関キー識別子と、古い CA 証明書のサブジェクト キー識別子を持ちます。

ルート CA にのみ適用されます。

CR_PROP_CABACKWARDCROSSCERTSTATE
プロパティのデータ型: Long、インデックス付き

後方クロス証明書が有効かどうか。 ルート CA に対してのみ有効です。

CR_PROP_CACERTSTATE
プロパティのデータ型: Long

CA 証明書の状態。値は次のいずれかです:

CR_PROP_CACERTSTATUSCODE
プロパティのデータ型: Long、インデックス付き

CA 証明書の状態 (HRESULT として)。

CR_PROP_CACERTVERSION
プロパティのデータ型: Long、インデックス付き

CA 証明書のバージョン (DWORD として)。上位ワードはキー インデックス、下位ワードは CA 証明書インデックスです。

CR_PROP_CAFORWARDCROSSCERT
プロパティのデータ型: Binary、インデックス付き

前方クロス証明書。前方クロス証明書は、更新時に CA が自身に対して発行し、CA の以前のキーで署名された証明書です。前方クロス証明書は、以前の CA 証明書の機関キー識別子と、新しい CA 証明書のサブジェクト キー識別子を持ちます。

ルート CA にのみ適用されます。

CR_PROP_CAFORWARDCROSSCERTSTATE
プロパティのデータ型: Long、インデックス付き

前方クロス証明書が有効かどうか。 ルート CA に対してのみ有効です。

CR_PROP_CANAME
プロパティのデータ型: String

CA の名前。

CR_PROP_CASIGCERT
プロパティのデータ型: Binary、インデックス付き

CA の署名証明書。

CR_PROP_CASIGCERTCHAIN
プロパティのデータ型: Binary、インデックス付き

CA の署名証明書チェーン。

CR_PROP_CASIGCERTCOUNT
プロパティのデータ型: Long

CA の署名証明書の数。

CR_PROP_CASIGCERTCRLCHAIN
プロパティのデータ型: Binary、インデックス付き

CA の署名証明書の CRL チェーン。

CR_PROP_CATYPE
プロパティのデータ型: Long

CA の種類。次のいずれかの値になります (Certsrv.h で定義):

CR_PROP_CAXCHGCERT
プロパティのデータ型: Binary、インデックス付き

CA の交換証明書。

CR_PROP_CAXCHGCERTCHAIN
プロパティのデータ型: Binary、インデックス付き

CA の交換証明書チェーン。

CR_PROP_CAXCHGCERTCOUNT
プロパティのデータ型: Long

CA の交換証明書の数。

CR_PROP_CAXCHGCERTCRLCHAIN
プロパティのデータ型: Binary、インデックス付き

CA の交換証明書の CRL チェーン。

CR_PROP_CERTAIAURLS
プロパティのデータ型: String、インデックス付き

クライアントが要求する URL の種類として、機関情報アクセス (AIA) URL を指定します。

Windows Server 2003:  This flag is not supported.

CR_PROP_CERTCDPURLS
プロパティのデータ型: String、インデックス付き

クライアントが要求する URL の種類として、CRL 配布ポイント URL を指定します。

Windows Server 2003:  This flag is not supported.

CR_PROP_CRLSTATE
プロパティのデータ型: Long

CA の CRL の状態。値は次のいずれかです:

CR_PROP_DELTACRL
プロパティのデータ型: Binary、インデックス付き

CA の差分 CRL。

CR_PROP_DELTACRLPUBLISHSTATUS
プロパティのデータ型: Long、インデックス付き

差分 CRL の発行状態。詳細については「解説」を参照してください。

CR_PROP_DNSNAME
プロパティのデータ型: String

CA の DNS 名。

CR_PROP_EXITCOUNT
プロパティのデータ型: Long

CA が使用している出口モジュールの数。

CR_PROP_EXITDESCRIPTION
プロパティのデータ型: String

出口モジュールの説明。

CR_PROP_FILEVERSION
プロパティのデータ型: String

証明書サービスのファイル バージョン。

CR_PROP_KRACERT
プロパティのデータ型: Binary、インデックス付き

CA のキー回復エージェント (KRA) 証明書。

CR_PROP_KRACERTCOUNT
プロパティのデータ型: Long

CA の KRA 証明書の数。

CR_PROP_KRACERTSTATE
プロパティのデータ型: Long、インデックス付き

KRA 証明書の状態。戻り値は次のいずれかです:

CR_PROP_KRACERTUSEDCOUNT
プロパティのデータ型: Long

CA が使用している KRA 証明書の数。

CR_PROP_PARENTCA
プロパティのデータ型: String

CA の親 CA の名前。

CR_PROP_POLICYDESCRIPTION
プロパティのデータ型: String

ポリシー モジュールの説明。

CR_PROP_PRODUCTVERSION
プロパティのデータ型: String

ファイルが出荷された製品バージョン。

CR_PROP_ROLESEPARATIONENABLED
プロパティのデータ型: Long

役割分離が有効かどうかを指定する値。

CR_PROP_SANITIZEDCANAME
プロパティのデータ型: String

CA のサニタイズ済み名。サニタイズ済み CA 名の定義については、ICertConfig2::GetConfig を参照してください。

CR_PROP_SANITIZEDCASHORTNAME
プロパティのデータ型: String

CA のサニタイズ済み短縮名。サニタイズ済み CA 短縮名の定義については、ICertConfig2::GetConfig を参照してください。

CR_PROP_SHAREDFOLDER
プロパティのデータ型: String

共有フォルダー ディレクトリの名前。

CR_PROP_TEMPLATES
プロパティのデータ型: String

CA がサポートするテンプレートの一覧。

PropIndexINTinPropId パラメーターがインデックス付きの場合に、プロパティ値を取得する際に使用する 0 から始まるインデックス。PropId がインデックス付きでない場合、この値は無視されます。
PropTypeINTin

プロパティの型を指定します。PropId テーブルの「意味」列に示されています。型は次のいずれかになります。

意味
PROPTYPE_LONG
符号付き long データ
PROPTYPE_DATE
日付/時刻 (将来の使用のために予約)
PROPTYPE_BINARY
バイナリ データ
PROPTYPE_STRING
Unicode 文字列データ
FlagsINTin

次のフラグを使用して、返されるプロパティ値の形式を指定できます。これらのフラグは、バイナリ データ (証明書、証明書チェーン、証明書失効リストなど) に対してのみ意味を持ち、それ以外の場合は無視されます。

意味
CV_OUT_BASE64
BEGIN/END なしの BASE64
CV_OUT_BASE64HEADER
BEGIN CERTIFICATE と END CERTIFICATE を含む BASE64
CV_OUT_BASE64REQUESTHEADER
BEGIN NEW CERTIFICATE REQUEST と END NEW CERTIFICATE REQUEST を含む BASE64
CV_OUT_BASE64X509CRLHEADER
BEGIN X509 CRL と END X509 CRL を含む BASE64
CV_OUT_BINARY
バイナリ
CV_OUT_HEX
16 進文字列
CV_OUT_HEXADDR
アドレス/オフセット付きの 16 進文字列
CV_OUT_HEXASCII
ASCII 付きの 16 進文字列
CV_OUT_HEXASCIIADDR
ASCII とアドレス/オフセット付きの 16 進文字列
pvarPropertyValueVARIANT*out要求したプロパティ値を受け取るバッファーへのポインター。使用が終わったら、VariantClear を呼び出してこのリソースを解放するのは呼び出し元の責任です。

戻り値

C++

戻り値は HRESULT です。 S_OK は、メソッドが成功したことを示します。

VB

要求したプロパティ値。

解説(Remarks)

プロパティ識別子が CR_PROP_BASECRLPUBLISHSTATUS または CR_PROP_DELTACRLPUBLISHSTATUS の場合、次の値が返されます。これらの値は組み合わせることができます。

説明
CPF_BADURL_ERROR URL が無効です。
CPF_BASE ベース CRL が発行されました。
CPF_CASTORE_ERROR CA ストア エラーにより発行できませんでした。
CPF_COMPLETE 完全な CRL が発行されました。
CPF_DELTA 差分 CRL が発行されました。
CPF_FILE_ERROR ファイル エラーにより発行できませんでした。
CPF_FTP_ERROR FTP エラーにより発行できませんでした。
CPF_HTTP_ERROR HTTP エラーにより発行できませんでした。
CPF_LDAP_ERROR LDAP エラーにより発行できませんでした。
CPF_MANUAL CRL が手動で発行されました。
CPF_SHADOW 空の差分 CRL が、新しいベース CRL と共に発行されました。
CPF_SIGNATURE_ERROR 署名エラーにより発行できませんでした。
 

CRL を取得する例については、証明書失効リストの取得を参照してください。

次の例は、CA の署名証明書の取得を示しています。この例では、ICertAdmin2 インターフェイス ポインターが有効であることを前提としています。

BSTR bstrCA = NULL;
VARIANT var1;
HRESULT hr;

bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA)
{
    printf("Failed to allocate memory for bstrCA\n");
    exit(1);
}

VariantInit(&var1);
// Retrieve the CA signature certificate at index 0.
hr = pAdmin2->GetCAProperty(bstrCA,
                                CR_PROP_CASIGCERT,
                                0,
                                PROPTYPE_BINARY,
                                CV_OUT_BASE64HEADER,
                                &var1);
if (FAILED(hr))
{
    printf("Failed GetCAProperty\n");
    SysFreeString(bstrCA);
    exit(1);  // Or other error action.
}

// Use the property as needed.
// ...

// Clear the variant when finished.
VariantClear(&var1);
SysFreeString(bstrCA);
vtbl 19 HRESULT SetCAProperty(LPWSTR strConfig, INT PropId, INT PropIndex, CERT_PROPERTY_TYPE PropType, VARIANT* pvarPropertyValue)

証明機関 (CA) のプロパティ値を設定します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、SetCAProperty は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
PropIdINTin

次のいずれかのプロパティ識別子を指定します。

読み取り専用のものを含むすべての CA プロパティについては、ICertAdmin2::GetCAProperty を参照してください。

意味
CR_PROP_KRACERT
CA のキー回復エージェント (KRA) 証明書。

データ形式: binary、インデックス付き。

CR_PROP_KRACERTCOUNT
CA の KRA 証明書の数。

データ形式: Long

CR_PROP_KRACERTUSEDCOUNT
CA が使用している KRA 証明書の数。

データ形式: Long

CR_PROP_ROLESEPARATIONENABLED
役割分離が有効かどうかを指定する値。

データ形式: Long

CR_PROP_TEMPLATES
CA がサポートするテンプレートの一覧。

データ形式: String

PropIndexINTinPropId パラメーターがインデックス付きの場合に、プロパティ値を取得する際に使用する 0 から始まるインデックス。PropId がインデックス付きでない場合、この値は無視されます。
PropTypeCERT_PROPERTY_TYPEin

プロパティの型を指定します。 このパラメーターは次のいずれかの値になります。

意味
PROPTYPE_LONG
符号付き Long データ。
PROPTYPE_DATE
日付/時刻 (将来の使用のために予約)。
PROPTYPE_BINARY
バイナリ データ。
PROPTYPE_STRING
Unicode String データ。
pvarPropertyValueVARIANT*in
C++ プロパティ値を指定する VARIANT へのポインター。
VB プロパティ値を指定する Variant

戻り値

VB

関数が成功した場合、戻り値は S_OK です。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラー コードの一覧については、一般的な HRESULT 値を参照してください。

vtbl 20 HRESULT GetCAPropertyFlags(LPWSTR strConfig, INT PropId, INT* pPropFlags)

ICertAdmin2::GetCAPropertyFlags メソッドは、証明機関 (CA) プロパティのプロパティ フラグを取得します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、GetCAPropertyFlags は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
PropIdINTinプロパティ識別子を指定します。このパラメーターについては、 ICertAdmin2::GetCAProperty のテーブルを参照してください。
pPropFlagsINT*outプロパティ フラグを表す値へのポインター。

戻り値

C++

戻り値は HRESULT です。 S_OK は、メソッドが成功したことを示します。

VB

プロパティ フラグを表す Long

解説(Remarks)

このメソッドを呼び出して取得した LONG 値を調べることで、データ型とインデックス付き状態を判別できます。データ型とインデックス付き状態を判別するには、それぞれ PROPTYPE_MASK 値と PROPFLAGS_INDEXED 値を使用します。

次の例では、ICertAdmin2 インターフェイス ポインターが有効であることを前提としています。

BSTR bstrCA = NULL;
LONG nFlags;  // Variable to contain the property flags.

bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA)
{
    printf("Failed to allocate memory for bstrCA\n");
    exit(1);
}

// Retrieve a property's flags.
hr = pCertAdmin2->GetCAPropertyFlags(bstrCA,
                                     CR_PROP_EXITCOUNT,
                                     &nFlags);
if (FAILED(hr))
{
    printf("Failed GetCAPropertyFlags\n");
    SysFreeString(bstrCA);
    exit(1);  // Or other error action.
}
// Display the property data type.
switch (nFlags & PROPTYPE_MASK)
{
    case PROPTYPE_BINARY:
        printf("Type is BINARY\n");
        break;
    case PROPTYPE_DATE:
        printf("Type is DATE\n");
        break;
    case PROPTYPE_LONG:
        printf("Type is LONG\n");
        break;
    case PROPTYPE_STRING:
        printf("Type is STRING\n");
        break;
    default:
        printf("Unexpected data type.\n");
        break;
}
// Display the property's indexed status.
printf("Property %s indexed\n", 
       nFlags & PROPFLAGS_INDEXED ? "is" : "is not");

SysFreeString(bstrCA);
vtbl 21 HRESULT GetCAPropertyDisplayName(LPWSTR strConfig, INT PropId, LPWSTR* pstrDisplayName)

ICertAdmin2::GetCAPropertyDisplayName メソッドは、証明機関 (CA) プロパティのプロパティ表示名を取得します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、GetCAPropertyDisplayName は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
PropIdINTinプロパティ識別子を指定します。このパラメーターについては、 ICertAdmin2::GetCAProperty のテーブルを参照してください。
pstrDisplayNameLPWSTR*out

プロパティの表示名を表す文字列へのポインター。

使用が終わったら、SysFreeString を呼び出して BSTR を解放するのは呼び出し元の責任です。

戻り値

C++

戻り値は HRESULT です。 S_OK は、メソッドが成功したことを示します。

VB

プロパティの表示名を表す文字列。
vtbl 22 HRESULT GetArchivedKey(LPWSTR strConfig, INT RequestId, INT Flags, LPWSTR* pstrArchivedKey)

アーカイブされたキー回復 BLOB を取得します。

strConfigLPWSTRin

証明機関 (CA) の有効な構成文字列を ComputerName\CAName 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、GetArchivedKey は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
RequestIdINTinCertificate Services データベース内の証明書要求 ID を表します。
FlagsINTin

次のフラグを使用して、返される BLOB の形式を指定できます。

意味
CR_OUT_BASE64
BEGIN/END なしの BASE64
CR_OUT_BASE64HEADER
BEGIN CERTIFICATE と END CERTIFICATE を含む BASE64
CV_OUT_BINARY
バイナリ
pstrArchivedKeyLPWSTR*out取得したアーカイブ済みキー BLOB を表す文字列へのポインター。この文字列の使用が終わったら、SysFreeString 関数を呼び出して解放するのは呼び出し元の責任です。

戻り値

C++

戻り値は HRESULT です。 S_OK は、メソッドが成功したことを示します。

VB

取得したアーカイブ済みキー BLOB を含む文字列。

解説(Remarks)

アーカイブされたキーは、1 つまたは複数のキー回復エージェント証明書に対して PKCS #7 で暗号化され、その形式で Certificate Services データベースに格納されます。このメソッドは、暗号化された PKCS #7 を Certificate Services データベースから取得し、ユーザー証明書とそのチェーン、1 つまたは複数のキー回復エージェント証明書、および証明機関の署名証明書とそのチェーンを含む署名済み PKCS #7 でラップします。認証属性には、ユーザー証明書を一意に識別するために使用される証明書が含まれます。

vtbl 23 HRESULT GetConfigEntry(LPWSTR strConfig, LPWSTR strNodePath, LPWSTR strEntryName, VARIANT* pvarEntry)

証明機関 (CA) の構成情報を取得します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。 このパラメーターは空の文字列にすることができます。その場合、この関数は CA に固有ではない構成情報を取得します。このパラメーターを NULL にすることはできません。

重要 構成文字列が変更されても、GetConfigEntry は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
strNodePathLPWSTRin構成情報のノード パスを表す文字列値。 このパラメーターは空の文字列にすることができます。その場合、この関数は strConfig で識別されるパスから構成情報を取得します。 このパラメーターを NULL にすることはできません。
strEntryNameLPWSTRin情報を取得するエントリの名前を表す文字列値。 この値は空の文字列にすることができます。その場合、すべてのエントリ名が取得されます。 このパラメーターを NULL にすることはできません。
pvarEntryVARIANT*out要求した情報を受け取る VARIANT へのポインター。

戻り値

C++

関数が成功した場合、戻り値は S_OK です。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラー コードの一覧については、一般的な HRESULT 値を参照してください。

VB

戻り値は、取得した構成情報を表す Variant です。

解説(Remarks)

構成情報は、レジストリの次のパスの下に格納されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\[CASANITIZEDNAME]\[strNodePath]\[strEntryName]

ここで CASANITIZEDNAME は CA のサニタイズ済み名です。サニタイズ済み名の詳細については、ICertConfig2::GetConfig を参照してください。

vtbl 24 HRESULT SetConfigEntry(LPWSTR strConfig, LPWSTR strNodePath, LPWSTR strEntryName, VARIANT* pvarEntry)

証明機関 (CA) の構成情報を設定します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。 このパラメーターは空の文字列にすることができます。その場合、この関数は CA に固有ではない構成情報を設定します。このパラメーターを NULL にすることはできません。

重要 構成文字列が変更されても、SetConfigEntry は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
strNodePathLPWSTRin構成情報のノード パスを表す文字列値。 このパラメーターは空の文字列にすることができます。その場合、この関数は strConfig で識別されるパスから構成情報を取得します。 このパラメーターを NULL にすることはできません。
strEntryNameLPWSTRin情報を設定するエントリの名前を表す文字列値。 この値は空の文字列にすることができます。その場合、既定のエントリが設定対象のエントリになります。 このパラメーターを NULL にすることはできません。
pvarEntryVARIANT*in
C++ 設定する情報を指定する VARIANT へのポインター。この値が空の場合、指定されたキーが削除されます。
VB 設定する情報を指定する Variant。この値が空の場合、指定されたキーが削除されます。

戻り値

VB

関数が成功した場合、戻り値は S_OK です。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラー コードの一覧については、一般的な HRESULT 値を参照してください。

解説(Remarks)

構成情報は、レジストリの次のパスの下に格納されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\[CASANITIZEDNAME]\[strNodePath]\[strEntryName]

ここで CASANITIZEDNAME は CA のサニタイズ済み名です。サニタイズ済み名の詳細については、ICertConfig2::GetConfig を参照してください。

vtbl 25 HRESULT ImportKey(LPWSTR strConfig, INT RequestId, LPWSTR strCertHash, CERT_IMPORT_FLAGS Flags, LPWSTR strKey)

暗号化されたキー セットを Certificate Services データベース内の項目に追加します。キー セットは、1 つまたは複数のキー回復エージェント (KRA) 証明書に対して暗号化されます。

strConfigLPWSTRin

証明機関 (CA) の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、ImportKey は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
RequestIdINTinCertificate Services データベース内の証明書要求 ID を表す LONG 値。要求 ID の代わりにシリアル番号 (strCertHash として渡される) を使用する場合は、この値に 0 を指定します。
strCertHashLPWSTRin証明書ハッシュを表す文字列値。strCertHash を使用するには、RequestId に 0 を指定する必要があります。
FlagsCERT_IMPORT_FLAGSin

キーの形式を指定します。 このパラメーターは次のいずれかの値になります。

意味
CR_IN_BASE64HEADER
begin または end を含む BASE64 形式。
CR_IN_BASE64
begin または end を含まない BASE64 形式。
CR_IN_BINARY
バイナリ形式。
 

さらに、次の値を、ビットごとの OR 演算を使用して形式の値と組み合わせることができます。

意味
IKF_OVERWRITE
既存の KRA エンコード情報が上書きされます。
strKeyLPWSTRinKRA キー情報を表す文字列値。
vtbl 26 HRESULT GetMyRoles(LPWSTR strConfig, CERTADMIN_GET_ROLES_FLAGS* pRoles)

呼び出し元の証明機関 (CA) 役割を取得します。

strConfigLPWSTRin

CA の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力したCAのコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、GetMyRoles は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
pRolesCERTADMIN_GET_ROLES_FLAGS*out

呼び出し元について取得した CA 役割を表す LONG 値へのポインター。これは、次の値のうち 0 個以上のビットごとの組み合わせにできます。

意味
CA_ACCESS_ADMIN
0x1
呼び出し元が CA 管理者機能を持っています。
CA_ACCESS_AUDITOR
0x4
呼び出し元が CA 監査者機能を持っています。
CA_ACCESS_ENROLL
0x200
呼び出し元が登録 (エンロール) アクセス権を持っています。
CA_ACCESS_OFFICER
0x2
呼び出し元が CA 責任者機能を持っています。
CA_ACCESS_OPERATOR
0x8
呼び出し元が CA バックアップ機能を持っています。
CA_ACCESS_READ
0x100
呼び出し元が CA 読み取りアクセス権を持っています。

戻り値

C++

関数が成功した場合、戻り値は S_OK です。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラー コードの一覧については、一般的な HRESULT 値を参照してください。

VB

戻り値は、呼び出し元について取得した CA 役割を表す Long 値です。これは、次の値のうち 0 個以上のビットごとの組み合わせにできます。
リターン コード/値 説明
CA_ACCESS_ADMIN
0x1
呼び出し元が CA 管理者機能を持っています。
CA_ACCESS_AUDITOR
0x4
呼び出し元が CA 監査者機能を持っています。
CA_ACCESS_ENROLL
0x200
呼び出し元が登録 (エンロール) アクセス権を持っています。
CA_ACCESS_OFFICER
0x2
呼び出し元が CA 責任者機能を持っています。
CA_ACCESS_OPERATOR
0x8
呼び出し元が CA バックアップ機能を持っています。
CA_ACCESS_READ
0x100
呼び出し元が読み取りアクセス権を持っています。
vtbl 27 HRESULT DeleteRow(LPWSTR strConfig, CERT_DELETE_ROW_FLAGS Flags, DOUBLE Date, CVRC_TABLE Table, INT RowId, INT* pcDeleted)

DeleteRow メソッドは、データベース テーブルから 1 行または複数の行を削除します。呼び出し元は、データベース テーブルと、行 ID または終了日のいずれかを指定します。

strConfigLPWSTRin

証明機関 (CA) の有効な構成文字列を COMPUTERNAME\CANAME 形式で表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力した証明機関のコモン名です。構成文字列名については、ICertConfig を参照してください。

重要 構成文字列が変更されても、DeleteRow は内部キャッシュをクリアしません。CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列でこのメソッドを再度呼び出す必要があります。
FlagsCERT_DELETE_ROW_FLAGSin

0 以外の場合、Date が有効期限に適用されるか、最終更新日に適用されるかを指定します。

次のいずれかの値になります。

意味
CDR_EXPIRED
削除される行は、有効期限が Date より前の行です。このフラグは、TableCVRC_TABLE_REQCERT または CVRC_TABLE_CRL の場合に使用できます。
CDR_REQUEST_LAST_CHANGED
削除される行は、保留中または拒否された要求の行であり、その最終更新日が Date より前の行です。このフラグは、TableCVRC_TABLE_REQCERT の場合に使用できます。
DateDOUBLEin

証明書または CRL を削除する場合は有効期限を、証明書要求を削除する場合は最終更新日を指定します。

この値が 0 以外の場合、RowID は 0 でなければなりません。

TableCVRC_TABLEin

行を削除する Certificate Services データベース テーブルを指定する LONG 値。

次のいずれかの値になります。

意味
CVRC_TABLE_ATTRIBUTES
属性テーブルが使用されます。
CVRC_TABLE_CRL
証明書失効リスト (CRL) テーブルが使用されます。
CVRC_TABLE_EXTENSIONS
拡張テーブルが使用されます。
CVRC_TABLE_REQCERT
保留中の要求、拒否された要求、発行済み証明書、および失効した証明書のテーブルが使用されます。
RowIdINTin

削除する行の ID を指定します。

この値が 0 以外の場合、Date は 0 でなければなりません。

pcDeletedINT*out正常に削除された行の数。

戻り値

C++

戻り値は HRESULT です。 S_OK は、メソッドが成功し、*pcDeleted に削除された行の数が設定されたことを示します。

VB

削除された行の数。

解説(Remarks)

RowIDDate は相互排他的です。どちらか一方のみが 0 以外の値を取ることができます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ICertAdmin2 "{F7C3AC41-B8CE-4FB4-AA58-3D1DC0E36B39}"
#usecom global ICertAdmin2 IID_ICertAdmin2 "{}"
#comfunc global ICertAdmin2_PublishCRLs               17 wstr,double,int
#comfunc global ICertAdmin2_GetCAProperty             18 wstr,int,int,int,int,var
#comfunc global ICertAdmin2_SetCAProperty             19 wstr,int,int,int,var
#comfunc global ICertAdmin2_GetCAPropertyFlags        20 wstr,int,var
#comfunc global ICertAdmin2_GetCAPropertyDisplayName  21 wstr,int,var
#comfunc global ICertAdmin2_GetArchivedKey            22 wstr,int,int,var
#comfunc global ICertAdmin2_GetConfigEntry            23 wstr,wstr,wstr,var
#comfunc global ICertAdmin2_SetConfigEntry            24 wstr,wstr,wstr,var
#comfunc global ICertAdmin2_ImportKey                 25 wstr,int,wstr,int,wstr
#comfunc global ICertAdmin2_GetMyRoles                26 wstr,var
#comfunc global ICertAdmin2_DeleteRow                 27 wstr,int,double,int,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。