Activation de session à session avec un moniker de session

L’activation de session à session (également appelée activation intersession) permet à un processus client de démarrer (activer) un processus serveur local sur une session spécifiée. Cette fonctionnalité est disponible pour les applications qui sont configurées pour s’exécuter dans le contexte de sécurité de l’utilisateur interactif, également appelé mode d’activation d’objet « RunAs Interactive User ». Pour plus d’informations sur les contextes de sécurité, consultez Contexte de sécurité du client.

Distributed COM (DCOM) permet l’activation d’objets par session à l’aide d’un moniker de session fourni par le système. Les autres monikers fournis par le système incluent les monikers de fichiers, lesmonikers d’élément, lesmonikers composites génériques, les anti-monikers, lesmonikers de pointeur et les monikers d’URL.

Pour pouvoir utiliser le moniker de session, l’application DCOM doit être définie pour s’exécuter en tant qu’utilisateur interactif. Vous pouvez le définir à l’aide de l’outil d’administration des services de composants, en affichant les propriétés de l’application DCOM et en sélectionnant L’utilisateur interactif sous l’onglet Identité . Pour plus d’informations sur les risques de sécurité possibles associés à la définition d’une application DCOM à exécuter en tant qu’utilisateur interactif dans un environnement des services Bureau à distance, consultez la section « Identité d’application (COM) » de la documentation COM dans le Kit de développement logiciel (SDK) de plateforme.

Si un autre type d’utilisateur est sélectionné pour exécuter l’application, le moniker de session est ignoré par l’application. Le moniker de session est également ignoré par les applications serveur COM+. Pour plus d’informations sur les autres méthodes permettant de sélectionner le type d’utilisateur à exécuter l’application, consultez la documentation COM dans le Kit de développement logiciel (SDK) de plateforme.

Pour créer un moniker de session, vous devez composer l’ID de session de la session des services Bureau à distance avec un moniker de classe qui spécifie l’ID de classe du serveur de processus.

Pour créer un moniker de session

  1. Préfixez le nom d’affichage du moniker de classe avec le nom d’affichage du moniker de session à l’aide de la syntaxe suivante :

    "Session:[digits]!clsid:[class id]"
    

    chiffres représente l’ID de session de la session sur laquelle le processus serveur sera démarré, et où id de classe représente l’ID de classe du serveur. Notez que l’ID de session est un nombre de base 10.

    Pour les ordinateurs qui exécutent Windows XP ou version ultérieure, l’utilisation de la syntaxe suivante entraîne l’envoi de l’activation com à la session de console physique active, quel que soit son ID de session :

    "Session:Console!clsid:[class id]"
    
  2. Après avoir créé le moniker de session, vous pouvez passer le résultat à la fonction MkParseDisplayName ou à la fonction MkParseDisplayNameEx .

Vous pouvez utiliser un moniker de session de la même façon que n’importe quel autre moniker.

Pour obtenir un exemple de code qui montre comment activer un processus de serveur local sur une session spécifiée, consultez Utilisation d’un moniker de session.

Pour plus d’informations sur l’activation d’objet, les monikers fournis par le système et les monikers de classe, consultez la documentation COM dans le Kit de développement logiciel (SDK) de plateforme.

Notes

Les processus créés entre les sessions ont une limite supérieure à la taille du bloc d’environnement. Cette limite est d’environ 4 Ko, mais elle peut être plus grande ou plus petite en fonction des autres informations nécessaires pour créer le processus (par exemple, les noms de fichiers, les répertoires et les paramètres du nouveau processus).