Membuat metode dari kelas Win32_Process

Metode kelas CreateWMI membuat proses baru.

Topik ini menggunakan sintaks Managed Object Format (MOF). Untuk informasi selengkapnya tentang menggunakan metode ini, lihat Memanggil Metode.

Sintaks

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

Parameter

CommandLine [in]

Baris perintah untuk dijalankan. Sistem menambahkan karakter null ke baris perintah, memangkas string jika perlu, untuk menunjukkan file mana yang benar-benar digunakan.

CurrentDirectory [in]

Kandar dan direktori saat ini untuk proses anak. String mengharuskan direktori saat ini diselesaikan ke jalur yang diketahui. Pengguna dapat menentukan jalur absolut atau jalur yang relatif terhadap direktori kerja saat ini. Jika parameter ini NULL, proses baru akan memiliki jalur yang sama dengan proses panggilan. Opsi ini disediakan terutama untuk shell yang harus memulai aplikasi dan menentukan drive awal dan direktori kerja aplikasi.

ProcessStartupInformation [in]

Konfigurasi startup dari proses Windows. Untuk informasi selengkapnya, lihat Win32_ProcessStartup.

ProcessId [out]

Pengidentifikasi proses global yang dapat digunakan untuk mengidentifikasi proses. Nilai berlaku sejak proses dibuat hingga waktu proses dihentikan.

Mengembalikan nilai

Mengembalikan nilai 0 (nol) jika proses berhasil dibuat, dan angka lain untuk menunjukkan kesalahan. Untuk kode kesalahan tambahan, lihat Konstanta Kesalahan WMI atau WbemErrorEnum. Untuk nilai HRESULT umum, lihat Kode Kesalahan Sistem.

Penyelesaian berhasil (0)

Akses ditolak (2)

Hak istimewa tidak memadai (3)

Kegagalan tidak diketahui (8)

Jalur tidak ditemukan (9)

Parameter tidak valid (21)

Lainnya (22 4294967295)

Keterangan

Anda dapat membuat instans kelas Win32_ProcessStartup untuk mengonfigurasi proses sebelum memanggil metode ini.

Jalur yang sepenuhnya memenuhi syarat harus ditentukan dalam kasus di mana program yang akan diluncurkan tidak berada di jalur pencarian Winmgmt.exe. Jika proses yang baru dibuat mencoba berinteraksi dengan objek pada sistem target tanpa hak istimewa akses yang sesuai, proses tersebut dihentikan tanpa pemberitahuan ke metode ini.

Untuk alasan keamanan, metode Win32_Process.Create tidak dapat digunakan untuk memulai proses interaktif dari jarak jauh.

Proses yang dibuat dengan metode Win32_Process.Create dibatasi oleh objek pekerjaan kecuali bendera CREATE_BREAKAWAY_FROM_JOB ditentukan. Untuk informasi selengkapnya, lihat Win32_ProcessStartup dan __ProviderHostQuotaConfiguration.

Contoh

Contoh VBScript berikut menunjukkan cara memanggil metode CIM seolah-olah itu adalah metode otomatisasi 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

Contoh Perl berikut menunjukkan cara memanggil metode CIM seolah-olah itu adalah metode otomatisasi 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";
}

Contoh kode VBScript berikut membuat proses Notepad di komputer lokal. Win32_ProcessStartup digunakan untuk mengonfigurasi pengaturan proses.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista
Server minimum yang didukung
Windows Server 2008
Ruang nama
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Lihat juga

Kelas Sistem Operasi

Win32_Process

Tugas WMI: Proses