CommandLineEventConsumer, classe

La classe CommandLineEventConsumer démarre un processus arbitraire dans le système local lorsqu’un événement lui est remis. Cette classe est l’un des consommateurs d’événements standard fournis par WMI. Pour plus d’informations, consultez surveillance et réponse aux événements avec des consommateurs standard.

Notes

Quand vous utilisez la classe CommandLineEventConsumer , sécurisez l’exécutable que vous souhaitez démarrer. Si l’exécutable ne se trouve pas dans un emplacement sécurisé ou sécurisé à l’aide d’une liste de contrôle d’accès (ACL) forte, un utilisateur non autorisé peut remplacer votre exécutable par un exécutable malveillant. pour plus d’informations sur les listes de contrôle d’accès, consultez la section sécurité du kit de développement logiciel (SDK) de Microsoft Windows et consultez création d’un descripteur de sécurité pour un nouvel objet.

Syntaxe

[AMENDMENT]
class CommandLineEventConsumer : __EventConsumer
{
  uint8   CreatorSID[];
  string  MachineName;
  uint32  MaximumQueueSize;
  string  CommandLineTemplate;
  boolean CreateNewConsole = False;
  boolean CreateNewProcessGroup = True;
  boolean CreateSeparateWowVdm = False;
  boolean CreateSharedWowVdm = False;
  string  DesktopName;
  string  ExecutablePath;
  uint32  FillAttributes;
  boolean ForceOffFeedback = False;
  boolean ForceOnFeedback = False;
  uint32  KillTimeout = 0;
  string  Name;
  sint32  Priority = 0x20;
  boolean RunInteractively = False;
  uint32  ShowWindowCommand;
  boolean UseDefaultErrorMode = False;
  string  WindowTitle;
  string  WorkingDirectory;
  uint32  XCoordinate;
  uint32  XNumCharacters;
  uint32  XSize;
  uint32  YCoordinate;
  uint32  YNumCharacters;
  uint32  YSize;
  uint32  FillAttribute;
};

Membres

La classe CommandLineEventConsumer possède les types de membres suivants :

Propriétés

La classe CommandLineEventConsumer possède les propriétés suivantes.

CommandLineTemplate

Type de données : chaîne

Type d'accès : Lecture seule

Modèle de chaîne standard qui spécifie le processus à démarrer. Cette propriété peut avoir la valeur null et la propriété ExecutablePath est utilisée comme ligne de commande.

CreateNewConsole

Type de données : booléen

Type d'accès : Lecture seule

Non utilisé. Si une valeur est assignée à cette propriété, un message de suivi est généré. Pour plus d’informations, consultez suivi de l' activité WMI.

CreateNewProcessGroup

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le nouveau processus est le processus racine d’un nouveau groupe de processus. Le groupe de processus comprend tous les processus qui sont des descendants de ce processus racine. L’identificateur de processus du nouveau groupe de processus est le même que cet identificateur de processus. Les groupes de processus sont utilisés par la méthode GenerateConsoleCtrlEvent pour permettre l’envoi d’un signal Ctrl + C ou CTRL + ATTN à un groupe de processus de console.

CreateSeparateWowVdm

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le nouveau processus s’exécute sur une machine virtuelle DOS privée (VDM). cela est valide uniquement lors du démarrage d’une application exécutée sur un système d’exploitation 16 bits Windows. si la valeur est false, toutes les applications qui s’exécutent sur un système d’exploitation Windows 16 bits s’exécutent en tant que threads dans un VDM unique et partagé. Pour plus d’informations, consultez la section Notes de cette rubrique.

CreateSharedWowVdm

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, la méthode CreateProcess exécute le nouveau processus dans l’ordinateur virtuel dos (VDM) partagé. cette propriété peut remplacer le commutateur DefaultSeparateVDM dans la section Windows de Win.ini si la valeur est True. Pour plus d’informations, consultez la section Notes de cette rubrique.

CreatorSID

Type de données : tableau UInt8

Type d'accès : Lecture seule

Identificateur de sécurité (SID) qui identifie de façon unique l’utilisateur qui crée un filtre. WMI stocke le SID de l’utilisateur qui crée une instance de _ _ EventConsumer ou le SID d’administrateur, selon le système d’exploitation. Pour plus d’informations, consultez liaison d’un filtre d’événements avec un consommateur logique et surveillance et réponse aux événements avec des consommateurs standard.

Cette propriété est héritée de _ _ EventConsumer.

DesktopName

Type de données : chaîne

Type d'accès : Lecture seule

Non utilisé. Si une valeur est affectée à cette propriété, un message de suivi est généré. Pour plus d’informations, consultez suivi de l' activité WMI.

ExecutablePath

Type de données : chaîne

Type d'accès : Lecture seule

Module à exécuter. La chaîne peut spécifier le chemin d’accès complet et le nom de fichier du module à exécuter, ou elle peut spécifier un nom partiel. Si un nom partiel est spécifié, le lecteur actif et le répertoire actif sont pris en défaut.

La propriété ExecutablePath peut avoir la valeur null. Dans ce cas, le nom du module doit être le premier jeton délimité par des espaces blancs dans la valeur de la propriété CommandLineTemplate . Si vous utilisez un nom de fichier long qui contient un espace, utilisez des chaînes entre guillemets pour indiquer l’emplacement où se termine le nom de fichier et les arguments commencent à clarifier le nom de fichier.

Notes

Étant donné que la propriété CommandLineTemplate peut être un modèle dans lequel le module à exécuter est fourni par une variable, une propriété ExecutablePath null autorise le module spécifié dans le paramètre à exécuter, puis il est hors de votre contrôle. Définissez toujours la propriété ExecutablePath dans l’inscription CommandLineEventConsumer pour inclure l’exécutable requis, ce qui évite le remplacement par les paramètres d’événements. Si vous devez utiliser un modèle et une variable pour spécifier le module à exécuter, veillez à savoir qui dispose des privilèges d’écriture complets dans l’espace de noms.

FillAttribute

Type de données : UInt32

Type d'accès : Lecture seule

Spécifie le texte et les couleurs d’arrière-plan initiaux si une nouvelle fenêtre de console est créée dans une application console

FillAttributes

Type de données : UInt32

Type d’accès : lecture/écriture

Texte initial et couleurs d’arrière-plan, si une nouvelle fenêtre de console est créée dans une application console. Cette propriété est ignorée dans une application GUI. La valeur peut être n’importe quelle combinaison des valeurs suivantes.

1 (0x1)

premier plan bleu

2 (0X2)

premier plan vert

4 (0x4)

premier plan rouge

8 (0x8)

intensité du premier plan

16 (0x10)

arrière-plan bleu

32 (0x20)

arrière-plan vert

64 (0x40)

arrière-plan rouge

128 (0x80)

intensité de l’arrière-plan

Par exemple, les combinaisons suivantes produisent du texte rouge sur un arrière-plan blanc :

0x4 | 0x40 | 0x20 | 0x10

ou

0x74

ForceOffFeedback

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le curseur de commentaires est forcé pendant le démarrage du processus. Le curseur normal s’affiche.

ForceOnFeedback

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le curseur est en mode commentaires pendant deux secondes après l’appel de CreateProcess . Pendant ces deux secondes, si le processus effectue le premier appel d’interface utilisateur graphique, le système accorde cinq secondes supplémentaires au processus. Pendant ces cinq secondes, si le processus affiche une fenêtre, le système donne une autre période de cinq secondes au processus pour terminer le dessin de la fenêtre.

KillTimeout

Type de données : UInt32

Type d'accès : Lecture seule

Nombre, en secondes, pendant lequel le service WMI attend avant de tuer un processus 0 (zéro) indique qu’un processus ne doit pas être supprimé. Le fait de tuer un processus empêche l’exécution indéfinie d’un processus.

MachineName

Type de données : chaîne

Type d'accès : Lecture seule

nom de l’ordinateur sur lequel Windows Management Instrumentation (WMI) envoie des événements.

Cette propriété est héritée de _ _ EventConsumer.

MaximumQueueSize

Type de données : UInt32

Type d'accès : Lecture seule

File d’attente maximale pour un consommateur spécifique, en octets.

Cette propriété est héritée de _ _ EventConsumer.

Nom

Type de données : chaîne

Type d'accès : Lecture seule

Qualificateurs : clé

Nom unique d’un consommateur.

Priorité

Type de données : sint32

Type d'accès : Lecture seule

Niveau de priorité de planification des threads de processus. La liste suivante répertorie les niveaux de priorité disponibles.

32 (0x20)

Indique un processus normal sans besoins de planification.

64 (0x40)

Indique un processus dont les threads s’exécutent uniquement lorsque le système est inactif et qui sont précédés par les threads de tout processus s’exécutant dans une classe de priorité plus élevée. Par exemple, un écran de veille. La classe de priorité Idle est héritée par les processus enfants.

128 (0x80)

Indique un processus qui exécute des tâches critiques de haute priorité. Les threads d’un processus de classe de priorité élevée précèdent les threads de processus de classe de priorité normale ou d’inactivité. Par exemple, la Liste des tâches, qui doit répondre rapidement lorsqu’elle est appelée par l’utilisateur, quelle que soit la charge sur le système. Soyez extrêmement vigilant lorsque vous utilisez la classe de priorité élevée, car une application liée au processeur avec une classe de priorité élevée peut utiliser presque tous les cycles disponibles.

256 (0x100)

Indique un processus qui a la priorité la plus élevée possible. Les threads d’un processus de classe de priorité en temps réel devancent les threads de tous les autres processus, y compris les processus du système d’exploitation qui effectuent des tâches importantes. Par exemple, un processus en temps réel qui s’exécute depuis plus d’un court intervalle peut entraîner la non-vidage du cache disque ou l’absence de réponse de la souris.

RunInteractively

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le processus est lancé dans la fenêtre interactive. Si la valeur est false, le processus est lancé dans la station de service par défaut. Cette propriété remplace la propriété DesktopName . Cette propriété est utilisée uniquement localement, et uniquement si l’utilisateur interactif est le même utilisateur qui a configuré le consommateur.

à partir de Windows Vista, le processus qui exécute l’instance CommandLineEventConsumer est démarré sous le compte LocalSystem et est dans la session 0. Les services qui s’exécutent dans la session 0 ne peuvent pas interagir avec les sessions utilisateur.

ShowWindowCommand

Type de données : UInt32

Type d'accès : Lecture seule

Affichage de l’état de la fenêtre. Il peut s’agir de l’une des valeurs qui peuvent être spécifiées dans le paramètre nCmdShow pour la fonction ShowWindow .

UseDefaultErrorMode

Type de données : booléen

Type d'accès : Lecture seule

Si la valeur est true, le mode d’erreur par défaut est utilisé.

WindowTitle

Type de données : chaîne

Type d'accès : Lecture seule

Titre qui apparaît dans la barre de titre du processus. Cette propriété est ignorée pour les applications GUI.

WorkingDirectory

Type de données : chaîne

Type d'accès : Lecture seule

Répertoire de travail pour ce processus.

XCoordinate

Type de données : UInt32

Type d'accès : Lecture seule

Décalage X, en pixels, entre le bord gauche de l’écran et le bord gauche de la fenêtre, si une nouvelle fenêtre est créée.

XNumCharacters

Type de données : UInt32

Type d'accès : Lecture seule

Largeur de la mémoire tampon d’écran, dans les colonnes de caractères, si une nouvelle fenêtre de console est créée. Cette propriété est ignorée dans un processus GUI.

XSize

Type de données : UInt32

Type d'accès : Lecture seule

Largeur, en pixels, d’une nouvelle fenêtre, si une nouvelle fenêtre est créée.

YCoordinate

Type de données : UInt32

Type d'accès : Lecture seule

Décalage Y, en pixels, entre le bord supérieur de l’écran et le bord supérieur de la fenêtre, si une nouvelle fenêtre est créée.

YNumCharacters

Type de données : UInt32

Type d'accès : Lecture seule

Hauteur de la mémoire tampon d’écran, en lignes de caractères, si une nouvelle fenêtre de console est créée. Cette propriété est ignorée dans un processus GUI.

YSize

Type de données : UInt32

Type d'accès : Lecture seule

Hauteur, en pixels, de la nouvelle fenêtre, si une nouvelle fenêtre est créée.

Remarques

La classe CommandLineEventConsumer est dérivée de la classe abstraite _ _ EventConsumer .

La propriété CreateSeparateWowVdm indique si le nouveau processus s’exécute sur une machine virtuelle DOS privée (VDM). L’avantage de s’exécuter séparément est qu’un incident ne met fin qu’à un seul VDM. les programmes qui s’exécutent dans des vdm distincts continuent de fonctionner normalement, et les applications de Windows 16 bits qui s’exécutent dans des vdm distincts ont des files d’attente d’entrée distinctes. Cela signifie que si une application cesse de répondre momentanément, les applications dans des VDM distincts continuent de recevoir l’entrée. L’inconvénient de l’exécution séparée est qu’il faut beaucoup plus de mémoire pour le faire. vous devez affecter à cette propriété la valeur True uniquement si l’utilisateur demande que des applications Windows 16 bits s’exécutent dans leur propre VDM.

Notes

CommandLineEventConsumer utilise la méthode CreateProcess en interne et transmet les propriétés ExecutablePath et CommandLineTemplate en tant que paramètres lpApplicationName et lpCommandLine . L’exemple de code format MOF (MOF) suivant n’utilise pas correctement CommandLineEventConsumer .

instance of CommandLineEventConsumer
{
  ExecutablePath = "C:\\windows\\system32\\cscript.exe";
  CommandLineTemplate = "C:\\scripts\\MyScript.js param1 param2";
};

La méthode CreateProcess passe lpCommandLine comme argv[0] , argv[1] , et ainsi de suite. Étant donné que argv[0] pour les applications 16 bits utilisées pour le nom de fichier exécutable, le code MOF précédent entraîne la création du processus comme si la commande suivante soit entrée à l’invite de commandes : c : \ Windows \ system32 \cscript.exe param1 param2.

La commande précédente ne fonctionne pas, car Cscript.exe n’examine pas argv[0] , et ne reconnaît pas qu’elle ne contient pas son propre nom, mais autre chose (« c : \ \ scripts \ \MyScript.js »). L’exemple suivant identifie l’utilisation recommandée de CommandLineEventConsumer.

instance of CommandLineEventConsumer
{
  ExecutablePath = "C:\\windows\\system32\\cscript.exe";
  CommandLineTemplate = "C:\\windows\\system32\\cscript.exe"
    "C:\\scripts\\MyScript.js param1 param2";
};

L’utilisation précédente de CommandLineEventConsumer entraîne la création du processus comme si la commande suivante avait été entrée à l’invite de commandes : c : \ Windows \ system32 \cscript.exe c : \ scripts \MyScript.js param1 param2

Étant donné que « c : \ \ scripts \ \MyScript.js » est maintenant argv[1] , il est visible par Cscript.exe et la commande est exécutée correctement.

Pour plus d’informations, consultez la fonction CreateProcess .

Exemples

Pour obtenir un exemple d’utilisation de CommandLineEventConsumer pour créer un consommateur, consultez exécution d’un programme à partir de la ligne de commande en fonction d’un événement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
Espace de noms
\Abonnement racine
MOF
Wbemcons. mof
DLL
Wbemcons.dll

Voir aussi

Classes de consommateur standard

Surveillance et réponse aux événements avec des consommateurs standard

Création d’un consommateur logique

Réception d’événements à tout moment

__EventConsumer