Méthode Create de la classe Win32_Process

La méthode declasse CreateWMI 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

CommandLine [in]

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

CurrentDirectory [in]

Lecteur et répertoire actuels pour le processus enfant. La chaîne exige que le répertoire actif soit résolu en un chemin 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 fournie principalement 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 de 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 n’importe quel autre nombre pour indiquer une erreur. Pour obtenir des codes d’erreur supplémentaires, consultez Constantes d’erreur WMI ou WbemErrorEnum. Pour obtenir des valeurs HRESULT générales, consultez Codes d’erreur système.

Réussite ( 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 complet doit être spécifié dans les cas où le programme à lancer n’est 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