Partager via


ICertAdmin ::SetRequestAttributes, méthode (certadm.h)

La méthode SetRequestAttributes définit les attributs dans la demande de certificat en attente spécifiée. Cette méthode a d’abord été définie dans l’interface ICertAdmin .

Pour que cette méthode réussisse, la demande de certificat doit être en attente.

Syntaxe

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

Paramètres

[in] strConfig

Représente une chaîne de configuration valide pour le serveur d’autorité de certification sous la forme COMPUTERNAME\CANAME, où COMPUTERNAME est le nom réseau du serveur des services de certificats et CANAME est le nom commun de l’autorité de certification, tel qu’entré lors de l’installation des services de certificats. Pour plus d’informations sur le nom de la chaîne de configuration, consultez ICertConfig.

ImportantSetRequestAttributes n’efface pas le cache interne lorsque la chaîne de configuration est modifiée. Lorsque vous modifiez la chaîne de configuration de l’autorité de certification, vous devez instancier un nouvel objet ICertAdmin et appeler à nouveau cette méthode avec la nouvelle chaîne de configuration.
 

[in] RequestId

Spécifie l’ID de la demande recevant les attributs.

[in] strAttributes

Spécifie les données d’attribut. Chaque attribut est une paire de chaînes nom-valeur. Le caractère deux-points sépare le nom et la valeur, et un caractère de nouvelle ligne sépare plusieurs paires nom-valeur, par exemple :

C++ AttributeName1 :AttributeValue1\nAttributeName2 :AttributeValue2
VB AttributeName1 :AttributeValue1 & vbNewLine & AttributeName2 :AttributeValue2
Il n’existe aucune limite définie au nombre d’attributs de requête pouvant être ajoutés à une requête.

Lorsque Les services de certificats analysent les noms d’attributs, ils ignorent les espaces, les traits d’union (signes moins) et la casse. Par exemple, AttributeName1, Attribute Name1 et Attribute-name1 sont tous équivalents. Pour les valeurs d’attribut, les services de certificats ignorent les espaces blancs de début et de fin.

Note La longueur maximale d’un nom d’attribut est de 127 caractères non NULL . La longueur maximale d’une valeur d’attribut est de 4 096 caractères non NULL .
 

Valeur retournée

VB

Si la méthode réussit, la méthode retourne S_OK.

Si la méthode échoue, elle retourne une valeur HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Remarques

Les attributs ajoutés ou mis à jour en appelant SetRequestAttributes ne modifient pas la chaîne d’attribut initiale non affectée associée à la demande de certificat. La chaîne d’attribut non étudiée de la demande de certificat est inaltérable une fois le certificat demandé (la méthode ICertRequest ::Submit autorise la spécification des attributs au moment où le certificat est demandé).

Vous pouvez utiliser le composant logiciel enfichable MMC Autorité de certification pour afficher la chaîne d’attribut de requête initiale non préparée.

Lorsque vous affichez les attributs analysés, vous voyez également les modifications dues aux appels à SetRequestAttributes.

Pour afficher les attributs analysés

  1. Ouvrez le composant logiciel enfichable MMC Autorité de certification.
  2. Ouvrez le dossier Demandes en attente .
  3. Cliquez avec le bouton droit sur une demande, pointez sur Toutes les tâches, puis cliquez sur Afficher les attributs/extensions.
Pour énumérer ou afficher tous les attributs analysés, y compris ceux ajoutés au moyen de SetRequestAttributes, vous pouvez également utiliser l’interface IEnumCERTVIEWATTRIBUTE .

Les tâches d’administration utilisent DCOM. Le code qui appelle cette méthode d’interface telle que définie dans une version antérieure de Certadm.h s’exécute sur les serveurs Windows tant que le client et le serveur exécutent tous les deux le même système d’exploitation Windows.

Exemples

    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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certadm.h (include Certsrv.h)
Bibliothèque Certidl.lib
DLL Certadm.dll

Voir aussi

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE