ICertAdmin::SetRequestAttributes メソッド (certadm.h)

SetRequestAttributes メソッドは、指定された保留中の証明書要求に属性を設定します。 このメソッドは、最初に ICertAdmin インターフェイスで定義されました。

このメソッドを成功させるには、証明書要求が保留中である必要があります。

構文

HRESULT SetRequestAttributes(
  [in] const BSTR strConfig,
  [in] LONG       RequestId,
  [in] const BSTR strAttributes
);

パラメーター

[in] strConfig

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

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

[in] RequestId

属性を受信する要求の ID を指定 します

[in] strAttributes

属性データを指定します。 各属性は、名前と値の文字列のペアです。 コロン文字は名前と値を区切り、改行文字は複数の名前と値のペアを区切ります。次に例を示します。

C++ AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2
VB AttributeName1:AttributeValue1 & vbNewLine & AttributeName2:AttributeValue2
要求に追加できる要求属性の数に制限はありません。

証明書サービスは、属性名を解析するときに、スペース、ハイフン (マイナス記号)、大文字と小文字を無視します。 たとえば、 AttributeName1Attribute Name1Attribute-name1 はすべて同等です。 属性値の場合、Certificate Services は先頭と末尾の空白を無視します。

メモ 属性名の最大長は、NULL 以外の 127 文字です。 属性値の最大長は、NULL 以外の 4,096 文字です。
 

戻り値

VB

メソッドが成功した場合、メソッドは S_OKを返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。

注釈

SetRequestAttributes を呼び出して追加または更新された属性は、証明書要求に関連付けられている最初の未解析の属性文字列を変更しません。 証明書要求の解析されていない属性文字列は、証明書が要求された後は変更できません ( ICertRequest::Submit メソッドでは、証明書が要求された時点で属性を指定できます)。

証明機関 MMC スナップインを使用して、解析されていない最初の要求属性文字列を表示できます。

解析された属性を表示すると、 SetRequestAttributes の呼び出しによる変更も表示されます。

解析された属性を表示するには

  1. 証明機関 MMC スナップインを開きます。
  2. [保留中の要求] フォルダーを開きます。
  3. 要求を右クリックし、[ すべてのタスク] をポイントして、[ 属性/拡張機能の表示] をクリックします。
SetRequestAttributes によって追加されたものを含め、解析されたすべての属性を列挙または表示するには、IEnumCERTVIEWATTRIBUTE インターフェイスを使用することもできます。

管理タスクでは DCOM を使用します。 以前のバージョンの Certadm.h で定義されているこのインターフェイス メソッドを呼び出すコードは、クライアントとサーバーの両方が同じ Windows オペレーティング システムを実行している限り、Windows ベースのサーバー上で実行されます。

    BSTR bstrAttribs = NULL;
    BSTR bstrCA = NULL;
    long nReqID;  // request ID

    //  Specify the attributes.
    //  For example, "AttName1:AttValue1\nAttName2:AttValue2". 
    bstrAttribs = SysAllocString(L"<ATTRIBUTESHERE>");
    if (NULL == bstrAttribs)
    {
        printf("Memory allocation failed for bstrAttribs.\n");
        goto error;
    }
    
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed for bstrCA.\n");
        goto error;
    }

    //  Request ID to receive the attributes.
    nReqID = <REQUESTIDHERE>;

    //  Add these attributes to the certificate.
    //  pCertAdmin is a previously instantiated
    //  ICertAdmin object pointer. 
    hr = pCertAdmin->SetRequestAttributes( bstrCA,
                                           nReqID,
                                           bstrAttribs );
    if (FAILED(hr))
        printf("Failed SetRequestAttributes [%x]\n", hr);
    else
        printf("SetRequestAttributes succeeded\n");

    //  Done processing.

error:

    if (bstrAttribs)
        SysFreeString(bstrAttribs);
    if (bstrCA)
        SysFreeString(bstrCA);
    //  Free other resources.

要件

要件
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー certadm.h (Certsrv.h を含む)
Library Certidl.lib
[DLL] Certadm.dll

こちらもご覧ください

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE