Membuat metode dari kelas Win32_Process
Metode Buatkelas WMI 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 pengaktifan 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 |
|
DLL |
|
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk