Metodo Create della classe Win32_Process
Il metodo Creaclasse WMI crea un nuovo processo.
Questo argomento usa la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.
Sintassi
uint32 Create(
[in] string CommandLine,
[in] string CurrentDirectory,
[in] Win32_ProcessStartup ProcessStartupInformation,
[out] uint32 ProcessId
);
Parametri
-
CommandLine [in]
-
Riga di comando da eseguire. Il sistema aggiunge un carattere Null alla riga di comando, tagliando la stringa, se necessario, per indicare quale file è stato effettivamente usato.
-
CurrentDirectory [in]
-
Unità corrente e directory per il processo figlio. La stringa richiede che la directory corrente si risolve in un percorso noto. Un utente può specificare un percorso assoluto o un percorso relativo alla directory di lavoro corrente. Se questo parametro è NULL, il nuovo processo avrà lo stesso percorso del processo chiamante. Questa opzione viene fornita principalmente per le shell che devono avviare un'applicazione e specificare l'unità iniziale e la directory di lavoro dell'applicazione.
-
ProcessStartupInformation [in]
-
Configurazione di avvio di un processo di Windows. Per altre informazioni, vedere Win32_ProcessStartup.
-
ProcessId [out]
-
Identificatore di processo globale che può essere usato per identificare un processo. Il valore è valido dal momento in cui il processo viene creato fino al termine del processo.
Valore restituito
Restituisce un valore pari a 0 (zero) se il processo è stato creato correttamente e qualsiasi altro numero per indicare un errore. Per altri codici di errore, vedere Costanti di errore WMI o WbemErrorEnum. Per i valori HRESULT generali, vedere Codici di errore di sistema.
-
Completamento riuscito (0)
-
Accesso negato (2)
-
Privilegi insufficienti (3)
-
Errore sconosciuto (8)
-
Percorso non trovato (9)
-
Parametro non valido (21)
-
Altro (22 4294967295)
Commenti
È possibile creare un'istanza della classe Win32_ProcessStartup per configurare il processo prima di chiamare questo metodo.
Un percorso completo deve essere specificato nei casi in cui il programma da avviare non è nel percorso di ricerca di Winmgmt.exe. Se il processo appena creato tenta di interagire con oggetti nel sistema di destinazione senza i privilegi di accesso appropriati, viene terminato senza notifica a questo metodo.
Per motivi di sicurezza non è possibile usare il metodo Win32_Process.Create per avviare un processo interattivo in remoto.
I processi creati con il metodo Win32_Process.Create sono limitati dall'oggetto processo, a meno che non sia specificato il flag di CREATE_BREAKAWAY_FROM_JOB . Per altre informazioni, vedere Win32_ProcessStartup e __ProviderHostQuotaConfiguration.
Esempio
L'esempio VBScript seguente illustra come richiamare un metodo CIM come se fosse un metodo di automazione di 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'esempio di Perl seguente illustra come richiamare un metodo CIM come se fosse un metodo di automazione di 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";
}
Nell'esempio di codice VBScript seguente viene creato un processo blocco note nel computer locale. Win32_ProcessStartup viene usato per configurare le impostazioni del processo.
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
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Spazio dei nomi |
Radice\CIMV2 |
MOF |
|
DLL |
|