Créer une méthode de la classe Win32_Process

La méthode CreateWMI class crée un processus.

Cette rubrique utilise la syntaxe MOF (Managed Object Format). Pour plus d’informations sur l’utilisation de cette méthode, consultez Appel d’une méthode.

Syntaxe

uint32 Create(
  [in]  string               CommandLine,
  [in]  string               CurrentDirectory,
  [in]  Win32_ProcessStartup ProcessStartupInformation,
  [out] uint32               ProcessId
);

Paramètres

Ligne de commande [in]

Ligne de commande à exécuter. Le système ajoute un caractère Null à la ligne de commande, en coupant la chaîne si nécessaire, pour indiquer le fichier qui a été utilisé.

CurrentDirectory [in]

Lecteur et répertoire actuels pour le processus enfant. La chaîne nécessite que le répertoire actif soit résolu en chemin d’accès connu. Un utilisateur peut spécifier un chemin absolu ou un chemin d’accès relatif au répertoire de travail actuel. Si ce paramètre a la valeur NULL, le nouveau processus aura le même chemin que le processus appelant. Cette option est principalement fournie pour les interpréteurs de commandes qui doivent démarrer une application et spécifier le lecteur initial et le répertoire de travail de l’application.

ProcessStartupInformation [in]

Configuration de démarrage d’un processus Windows. Pour plus d’informations, consultez Win32_ProcessStartup.

ProcessId [out]

Identificateur de processus global qui peut être utilisé pour identifier un processus. La valeur est valide à partir du moment où le processus est créé jusqu’à l’arrêt du processus.

Valeur retournée

Retourne une valeur de 0 (zéro) si le processus a été correctement créé, et tout autre nombre pour indiquer une erreur. Pour obtenir des codes d’erreur supplémentaires, consultez Constantes d’erreur WMI ou WbemErrorEnum. Pour connaître les valeurs HRESULT générales, consultez Codes d’erreur système.

Achèvement réussi (0)

Accès refusé (2)

Privilège insuffisant (3)

Échec inconnu (8)

Chemin introuvable (9)

Paramètre non valide (21)

Autre (22 4294967295)

Notes

Vous pouvez créer une instance de la classe Win32_ProcessStartup pour configurer le processus avant d’appeler cette méthode.

Un chemin d’accès complet doit être spécifié dans les cas où le programme à lancer ne se trouve pas dans le chemin de recherche de Winmgmt.exe. Si le processus nouvellement créé tente d’interagir avec des objets sur le système cible sans les privilèges d’accès appropriés, il est arrêté sans notification à cette méthode.

Pour des raisons de sécurité, la méthode Win32_Process.Create ne peut pas être utilisée pour démarrer un processus interactif à distance.

Les processus créés avec la méthode Win32_Process.Create sont limités par l’objet de travail, sauf si l’indicateur CREATE_BREAKAWAY_FROM_JOB est spécifié. Pour plus d’informations, consultez Win32_ProcessStartup et __ProviderHostQuotaConfiguration.

Exemples

L’exemple VBScript suivant montre comment appeler une méthode CIM comme s’il s’agissait d’une méthode d’automatisation de SWbemObject.

on error resume next

set process = GetObject("winmgmts:Win32_Process")

result = process.Create ("notepad.exe",null,null,processid)

WScript.Echo "Method returned result = " & result
WScript.Echo "Id of new process is " & processid

if err <>0 then
 WScript.Echo Err.Description, "0x" & Hex(Err.Number)
end if

L’exemple Perl suivant montre comment appeler une méthode CIM comme s’il s’agissait d’une méthode d’automatisation de SWbemObject.

use strict;
use Win32::OLE;

my ($process, $outParam, $processid, $inParam, $objMethod);

eval { $process = 
 Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2:Win32_Process"); };

if (!$@ && defined $process)
{
 $objMethod = $process->Methods_("Create");

 #Spawn an instance of inParameters and assign the values.
 $inParam = $objMethod->inParameters->SpawnInstance_ if (defined $objMethod);
 $inParam->{CommandLine} = "notepad.exe";
 $inParam->{CurrentDirectory} = undef;
 $inParam->{ProcessStartupInformation} = undef;

 $outParam = $process->ExecMethod_("Create", $inParam) if (defined $inParam);
 if ($outParam->{ReturnValue})
 {
  print STDERR Win32::OLE->LastError, "\n";
 }
 else
 {
  print "Method returned result = $outParam->{ReturnValue}\n";
  print "Id of new process is $outParam->{ProcessId}\n"
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

L’exemple de code VBScript suivant crée un processus Bloc-notes sur l’ordinateur local. Win32_ProcessStartup est utilisé pour configurer les paramètres de processus.

Const SW_NORMAL = 1
strComputer = "."
strCommand = "Notepad.exe" 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

' Configure the Notepad process to show a window
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL

' Create Notepad process
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create _
    (strCommand, Null, objConfig, intProcessID)
If intReturn <> 0 Then
    Wscript.Echo "Process could not be created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Return value: " & intReturn
Else
    Wscript.Echo "Process created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Process ID: " & intProcessID
End If

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
Espace de noms
Racine\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Voir aussi

Classes du système d’exploitation

Win32_Process

Tâches WMI : Processus