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 |
|
DLL |
|