Create-Methode der Win32 _ Process-Klasse
Die Create WMI-Klassenmethode erstellt einen neuen Prozess.
In diesem Thema wird Managed Object Format -Syntax (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]
-
Auszuführende Befehlszeile. Das System fügt der Befehlszeile ein NULL-Zeichen hinzu, wodurch 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 auflöset. 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 hauptsächlich 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 Prozess. Weitere Informationen finden Sie unter Win32 _ ProcessStartup.
-
ProcessId [ out]
-
Globaler Prozessbezeichner, der zum Identifizieren eines Prozesses verwendet werden kann. Der Wert ist ab dem Zeitpunkt gültig, zu dem der Prozess erstellt wird, bis zu dem Zeitpunkt, zu dem der Prozess beendet wird.
Rückgabewert
Gibt den Wert 0 (null) zurück, wenn der Prozess erfolgreich erstellt wurde, und eine beliebige andere Zahl, um einen Fehler anzugeben. Weitere Fehlercodes finden Sie unter WMI-Fehlerkonstistenzen 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)
Hinweise
Sie können eine Instanz der Win32 _ ProcessStartup-Klasse erstellen, um den Prozess vor dem Aufrufen dieser Methode zu konfigurieren.
Ein vollqualifizierter Pfad muss in Fällen angegeben werden, in denen sich das zu startde Programm nicht im Suchpfad des Winmgmt.exe. Wenn der neu erstellte Prozess versucht, ohne die entsprechenden Zugriffsberechtigungen mit Objekten im 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 werden, werden durch das Auftragsobjekt eingeschränkt, es sei denn, das FLAG CREATE _ BREAKAWAY FROM _ _ JOB ist 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 sie 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 wäre sie eine Automatisierungsmethode von 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";
}
Im folgenden VBScript-Codebeispiel wird ein Editor 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) |
Windows Server 2008 |
| Namespace |
\Stamm-CIMV2 |
| MOF |
|
| DLL |
|