Create-Methode der Win32_Process-Klasse
Die CreateWMI-Klassenmethode erstellt einen neuen Prozess.
In diesem Thema wird MOF-Syntax (Managed Object Format) 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]
-
Auszuführende Befehlszeile. Das System fügt der Befehlszeile ein NULL-Zeichen hinzu, wobei die Zeichenfolge bei Bedarf gekürzt wird, 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 in 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, hat der neue Prozess den gleichen Pfad wie der aufrufende Prozess. Diese Option wird in erster Linie für Shells bereitgestellt, die eine Anwendung starten und das anfängliche Laufwerk und das Arbeitsverzeichnis der Anwendung angeben müssen.
-
ProcessStartupInformation [in]
-
Die Startkonfiguration eines Windows-Prozesses. Weitere Informationen finden Sie unter Win32_ProcessStartup.
-
ProcessId [out]
-
Globaler Prozessbezeichner, der verwendet werden kann, um einen Prozess zu identifizieren. Der Wert ist von der Erstellung des Prozesses bis zum Beenden des Prozesses gültig.
Rückgabewert
Gibt den Wert 0 (null) zurück, wenn der Prozess erfolgreich erstellt wurde, und eine beliebige andere Zahl, die auf einen Fehler hinweist. 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)
-
Sonstige (22 4294967295)
Bemerkungen
Sie können eine instance der Win32_ProcessStartup-Klasse erstellen, um den Prozess zu konfigurieren, bevor Sie diese Methode aufrufen.
Ein vollqualifizierter Pfad muss angegeben werden, wenn sich das zu startende Programm nicht im Suchpfad von Winmgmt.exe befindet. Wenn der neu erstellte Prozess versucht, ohne die entsprechenden Zugriffsberechtigungen mit Objekten auf dem Zielsystem 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, werden durch das Auftragsobjekt beschränkt, es sei denn, das flag CREATE_BREAKAWAY_FROM_JOB wird angegeben. Weitere Informationen finden Sie unter Win32_ProcessStartup und __ProviderHostQuotaConfiguration.
Beispiele
Im folgenden VBScript-Beispiel wird veranschaulicht, wie eine CIM-Methode aufgerufen wird, als wäre es eine Automatisierungsmethode von 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
Im folgenden Perl-Beispiel wird veranschaulicht, wie eine CIM-Methode aufgerufen wird, als ob 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
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows Vista |
Unterstützte Mindestversion (Server) |
WindowsServer 2008 |
Namespace |
Root\CIMV2 |
MOF |
|
DLL |
|