Erstellen einer Methode der Win32_Process-Klasse

Die CreateWMI-Klassenmethode erstellt einen neuen Prozess.

In diesem Thema wird die Syntax "Managed Object Format" (MOF) verwendet. Weitere Informationen zur Verwendung dieser Methode finden Sie unter Aufrufen einer Methode.

Syntax

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

Parameter

CommandLine [in]

Befehlszeile, die ausgeführt werden soll. Das System fügt der Befehlszeile ein NULL-Zeichen hinzu, um anzugeben, welche Datei tatsächlich verwendet wurde.

CurrentDirectory [in]

Aktuelles Laufwerk und Verzeichnis für den untergeordneten Prozess. Die Zeichenfolge erfordert, dass das aktuelle Verzeichnis auf einen bekannten Pfad aufgelöst wird. Ein Benutzer kann einen absoluten Pfad oder einen Pfad relativ zum aktuellen Arbeitsverzeichnis angeben. Wenn dieser Parameter NULL ist, weist der neue Prozess den gleichen Pfad wie den Aufrufprozess auf. Diese Option wird in erster Linie für Shells bereitgestellt, die eine Anwendung starten müssen und das anfängliche Laufwerk und das Arbeitsverzeichnis der Anwendung angeben.

ProcessStartupInformation [in]

Die Startkonfiguration eines Windows Prozesses. Weitere Informationen finden Sie unter Win32_ProcessStartup.

ProcessId [out]

Globaler Prozessbezeichner, der zum Identifizieren eines Prozesses verwendet werden kann. Der Wert ist gültig aus dem Zeitpunkt, an dem der Prozess erstellt wird, bis der Prozess beendet wird.

Rückgabewert

Gibt einen Wert von 0 (Null) zurück, wenn der Prozess erfolgreich erstellt wurde, und jede andere Zahl, um einen Fehler anzugeben. Weitere Fehlercodes finden Sie unter WMI-Fehlerkonstanten oder WbemErrorEnum. Allgemeine HRESULT-Werte finden Sie unter Systemfehlercodes.

Erfolgreicher Abschluss (0)

Zugriff verweigert (2)

Unzureichende Berechtigungen (3)

Unbekannter Fehler (8)

Pfad nicht gefunden (9)

Ungültiger Parameter (21)

Andere (22 4294967295)

Bemerkungen

Sie können eine Instanz der Win32_ProcessStartup-Klasse erstellen, um den Prozess zu konfigurieren, bevor Sie diese Methode aufrufen.

Ein vollqualifizierter Pfad muss in Fällen angegeben werden, in denen das zu startende Programm nicht im Suchpfad von Winmgmt.exe ist. Wenn der neu erstellte Prozess versucht, mit Objekten im Zielsystem ohne die entsprechenden Zugriffsberechtigungen zu interagieren, wird er ohne Benachrichtigung an diese Methode beendet.

Aus Sicherheitsgründen kann die Win32_Process.Create-Methode nicht verwendet werden, um einen interaktiven Prozess remote zu starten.

Prozesse, die mit der Win32_Process.Create-Methode erstellt wurden, sind durch das Auftragsobjekt beschränkt, es sei denn, das CREATE_BREAKAWAY_FROM_JOB-Flag wird angegeben. Weitere Informationen finden Sie unter Win32_ProcessStartup und __ProviderHostQuotaConfiguration.

Beispiele

Im folgenden VBScript-Beispiel wird veranschaulicht, wie eine CIM-Methode aufgerufen wird, wie es sich um eine Automatisierungsmethode von SWbemObject handelt.

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

Im folgenden Perl-Beispiel wird veranschaulicht, wie eine CIM-Methode aufgerufen wird, wie es sich um eine Automatisierungsmethode von SWbemObject handelt.

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";
}

Im folgenden VBScript-Codebeispiel wird ein Editor Prozess auf dem lokalen Computer erstellt. Win32_ProcessStartup wird verwendet, um die Prozesseinstellungen zu konfigurieren.

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

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Namespace
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Siehe auch

Betriebssystemklassen

Win32_Process

WMI-Aufgaben: Prozesse