Bagikan melalui


Kelas CommandLineEventConsumer

Kelas CommandLineEventConsumer memulai proses arbitrer dalam sistem lokal ketika suatu peristiwa dikirimkan ke dalamnya. Kelas ini adalah salah satu konsumen peristiwa standar yang disediakan WMI. Untuk informasi selengkapnya, lihat Memantau dan Merespons Peristiwa dengan Konsumen Standar.

Catatan

Saat menggunakan kelas CommandLineEventConsumer , amankan executable yang ingin Anda mulai. Jika executable tidak berada di lokasi yang aman, atau diamankan dengan daftar kontrol akses (ACL) yang kuat, pengguna yang tidak sah dapat mengganti executable Anda dengan executable berbahaya. Untuk informasi selengkapnya tentang ACL, kunjungi bagian Keamanan Microsoft Windows Software Development Kit (SDK), dan lihat Membuat Deskriptor Keamanan untuk Objek Baru.

Sintaks

[AMENDMENT]
class CommandLineEventConsumer : __EventConsumer
{
  uint8   CreatorSID[];
  string  MachineName;
  uint32  MaximumQueueSize;
  string  CommandLineTemplate;
  boolean CreateNewConsole = False;
  boolean CreateNewProcessGroup = True;
  boolean CreateSeparateWowVdm = False;
  boolean CreateSharedWowVdm = False;
  string  DesktopName;
  string  ExecutablePath;
  uint32  FillAttributes;
  boolean ForceOffFeedback = False;
  boolean ForceOnFeedback = False;
  uint32  KillTimeout = 0;
  string  Name;
  sint32  Priority = 0x20;
  boolean RunInteractively = False;
  uint32  ShowWindowCommand;
  boolean UseDefaultErrorMode = False;
  string  WindowTitle;
  string  WorkingDirectory;
  uint32  XCoordinate;
  uint32  XNumCharacters;
  uint32  XSize;
  uint32  YCoordinate;
  uint32  YNumCharacters;
  uint32  YSize;
  uint32  FillAttribute;
};

Anggota

Kelas CommandLineEventConsumer memiliki jenis anggota ini:

Properti

Kelas CommandLineEventConsumer memiliki properti ini.

CommandLineTemplate

Jenis data: string

Jenis akses: Baca-saja

Templat string standar yang menentukan proses yang akan dimulai. Properti ini bisa NULL, dan properti ExecutablePath digunakan sebagai baris perintah.

BuatNewConsole

Jenis data: boolean

Jenis akses: Baca-saja

Tidak digunakan. Jika nilai ditetapkan ke properti ini, pesan pelacakan akan dihasilkan. Untuk informasi selengkapnya, lihat Melacak Aktivitas WMI.

CreateNewProcessGroup

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, proses baru adalah proses akar dari grup proses baru. Grup proses mencakup semua proses yang merupakan keturunan dari proses akar ini. Pengidentifikasi proses grup proses baru sama dengan pengidentifikasi proses ini. Grup proses digunakan oleh metode GenerateConsoleCtrlEvent untuk mengaktifkan pengiriman sinyal CTRL+C atau CTRL+BREAK ke sekelompok proses konsol.

CreateSeparateWowVdm

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, proses baru berjalan di Virtual DOS Machine (VDM) privat. Ini hanya valid ketika memulai aplikasi yang berjalan pada sistem operasi Windows 16-bit. Jika diatur ke False, semua aplikasi yang berjalan pada sistem operasi Windows 16-bit berjalan sebagai utas dalam satu VDM bersama. Untuk informasi selengkapnya, lihat bagian Keterangan dari topik ini.

CreateSharedWowVdm

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, metode CreateProcess menjalankan proses baru di Virtual DOS Machine (VDM) bersama. Properti ini dapat mengganti sakelar DefaultSeparateVDM di bagian Windows Win.ini jika diatur ke True. Untuk informasi selengkapnya, lihat bagian Keterangan dari topik ini.

CreatorSID

Jenis data: array uint8

Jenis akses: Baca-saja

Pengidentifikasi keamanan (SID) yang secara unik mengidentifikasi pengguna yang membuat filter. WMI menyimpan SID pengguna yang membuat instans __EventConsumer atau Administrator SID, tergantung pada sistem operasi. Untuk informasi selengkapnya, lihat Mengikat Filter Peristiwa dengan Konsumen Logis dan Memantau dan Merespons Peristiwa dengan Konsumen Standar.

Properti ini diwarisi dari __EventConsumer.

DesktopName

Jenis data: string

Jenis akses: Baca-saja

Tidak digunakan. Jika nilai ditetapkan ke properti ini, pesan pelacakan akan dihasilkan. Untuk informasi selengkapnya, lihat Melacak Aktivitas WMI.

ExecutablePath

Jenis data: string

Jenis akses: Baca-saja

Modul yang akan dijalankan. String dapat menentukan jalur lengkap dan nama file modul yang akan dijalankan, atau dapat menentukan nama parsial. Jika nama parsial ditentukan, drive saat ini dan direktori saat ini diasumsikan.

Properti ExecutablePath dapat berupa NULL. Dalam hal ini, nama modul harus menjadi token pertama yang dibatasi spasi putih dalam nilai properti CommandLineTemplate . Jika menggunakan nama file panjang yang berisi spasi, gunakan string yang dikutip untuk menunjukkan di mana nama file berakhir dan argumen mulai mengklarifikasi nama file.

Catatan

Karena properti CommandLineTemplate dapat menjadi templat tempat modul yang akan dijalankan disediakan oleh variabel, properti NULLExecutablePath mengizinkan modul yang ditentukan dalam parameter untuk dijalankan, dan kemudian berada di luar kendali Anda. Selalu atur properti ExecutablePath di pendaftaran CommandLineEventConsumer untuk menyertakan executable yang diperlukan, yang menghindari penimpaan oleh parameter peristiwa. Jika Anda harus menggunakan templat dan variabel untuk menentukan modul yang akan dijalankan, berhati-hatilah tentang siapa yang diberikan hak tulis penuh di namespace layanan.

FillAttribute

Jenis data: uint32

Jenis akses: Baca-saja

Menentukan teks awal dan warna latar belakang jika jendela konsol baru dibuat dalam aplikasi konsol

FillAttributes

Jenis data: uint32

Jenis akses: Baca/tulis

Teks awal dan warna latar belakang, jika jendela konsol baru dibuat di aplikasi konsol. Properti ini diabaikan dalam aplikasi GUI. Nilai dapat berupa kombinasi apa pun dari nilai berikut.

1 (0x1)

latar depan biru

2 (0x2)

latar depan hijau

4 (0x4)

latar depan merah

8 (0x8)

intensitas latar depan

16 (0x10)

latar belakang biru

32 (0x20)

latar belakang hijau

64 (0x40)

latar belakang merah

128 (0x80)

intensitas latar belakang

Misalnya, kombinasi berikut menghasilkan teks merah pada latar belakang putih:

0x4 | 0x40 | 0x20 | 0x10

atau

0x74

ForceOffFeedback

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, kursor umpan balik dipaksa mati saat proses dimulai. Kursor normal ditampilkan.

ForceOnFeedback

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, kursor berada dalam mode umpan balik selama dua detik setelah CreateProcess dipanggil. Selama dua detik tersebut, jika proses melakukan panggilan GUI pertama, sistem memberikan lima detik lagi untuk prosesnya. Selama lima detik tersebut, jika proses menunjukkan jendela, sistem memberikan lima detik lagi ke proses untuk menyelesaikan menggambar jendela.

KillTimeout

Jenis data: uint32

Jenis akses: Baca-saja

Angka, dalam detik, bahwa layanan WMI menunggu sebelum membunuh proses 0 (nol) menunjukkan proses tidak akan dimatikan. Membunuh proses mencegah proses berjalan tanpa batas waktu.

MachineName

Jenis data: string

Jenis akses: Baca-saja

Nama komputer tempat Instrumentasi Manajemen Windows (WMI) mengirim peristiwa.

Properti ini diwarisi dari __EventConsumer.

MaximumQueueSize

Jenis data: uint32

Jenis akses: Baca-saja

Antrean maksimum untuk konsumen tertentu, dalam byte.

Properti ini diwarisi dari __EventConsumer.

Nama

Jenis data: string

Jenis akses: Baca-saja

Kualifikasi: kunci

Nama konsumen yang unik.

Prioritas

Jenis data: sint32

Jenis akses: Baca-saja

Menjadwalkan tingkat prioritas utas proses. Daftar berikut mencantumkan tingkat prioritas yang tersedia.

32 (0x20)

Menunjukkan proses normal tanpa menjadwalkan kebutuhan.

64 (0x40)

Menunjukkan proses yang utasnya hanya berjalan saat sistem diam, dan didahulukan oleh utas dari proses apa pun yang berjalan di kelas prioritas yang lebih tinggi. Contohnya adalah pengaman layar. Kelas prioritas menganggur diwariskan oleh proses anak.

128 (0x80)

Menunjukkan proses yang melakukan tugas prioritas tinggi dan kritis waktu. Utas proses kelas prioritas tinggi mendahului utas proses kelas prioritas normal atau diam. Contohnya adalah Daftar Tugas, yang harus merespons dengan cepat ketika dipanggil oleh pengguna terlepas dari beban pada sistem. Gunakan perawatan ekstrem saat menggunakan kelas prioritas tinggi, karena aplikasi yang terikat CPU dengan kelas prioritas tinggi dapat menggunakan hampir semua siklus yang tersedia.

256 (0x100)

Menunjukkan proses yang memiliki prioritas tertinggi. Utas proses kelas prioritas real time mendahului utas dari semua proses lain, termasuk proses sistem operasi yang melakukan tugas penting. Misalnya, proses real time yang dijalankan selama lebih dari interval singkat dapat menyebabkan cache disk tidak memerah, atau menyebabkan mouse tidak responsif.

RunInteractively

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, proses diluncurkan di WinStation interaktif. Jika False, proses diluncurkan di layanan default WinStation. Properti ini mengambil alih properti DesktopName . Properti ini hanya digunakan secara lokal, dan hanya jika pengguna interaktif adalah pengguna yang sama yang menyiapkan konsumen.

Dimulai dengan Windows Vista, proses menjalankan instans CommandLineEventConsumer dimulai di bawah akun LocalSystem dan berada di sesi 0. Layanan yang berjalan di sesi 0 tidak dapat berinteraksi dengan sesi pengguna.

ShowWindowCommand

Jenis data: uint32

Jenis akses: Baca-saja

Status peragaan jendela. Ini bisa menjadi salah satu nilai yang dapat ditentukan dalam parameter nCmdShow untuk fungsi ShowWindow .

UseDefaultErrorMode

Jenis data: boolean

Jenis akses: Baca-saja

Jika True, mode kesalahan default digunakan.

WindowTitle

Jenis data: string

Jenis akses: Baca-saja

Judul yang muncul pada bilah judul proses. Properti ini diabaikan untuk aplikasi GUI.

WorkingDirectory

Jenis data: string

Jenis akses: Baca-saja

Direktori kerja untuk proses ini.

XCoordinate

Jenis data: uint32

Jenis akses: Baca-saja

Offset X, dalam piksel, dari tepi kiri layar ke tepi kiri jendela, jika jendela baru dibuat.

XNumCharacters

Jenis data: uint32

Jenis akses: Baca-saja

Lebar buffer layar, di kolom karakter, jika jendela konsol baru dibuat. Properti ini diabaikan dalam proses GUI.

XSize

Jenis data: uint32

Jenis akses: Baca-saja

Lebar, dalam piksel, dari jendela baru, jika jendela baru dibuat.

YCoordinate

Jenis data: uint32

Jenis akses: Baca-saja

Offset Y, dalam piksel, dari tepi atas layar ke tepi atas jendela, jika jendela baru dibuat.

YNumCharacters

Jenis data: uint32

Jenis akses: Baca-saja

Tinggi buffer layar, dalam baris karakter, jika jendela konsol baru dibuat. Properti ini diabaikan dalam proses GUI.

Ukuran Y

Jenis data: uint32

Jenis akses: Baca-saja

Tinggi, dalam piksel, dari jendela baru, jika jendela baru dibuat.

Keterangan

Kelas CommandLineEventConsumer berasal dari kelas abstrak __EventConsumer .

Properti CreateSeparateWowVdm menunjukkan apakah proses baru berjalan di Virtual DOS Machine (VDM) privat atau tidak. Keuntungan berjalan secara terpisah adalah bahwa crash hanya mengakhiri VDM tunggal. Program yang berjalan dalam VDM yang berbeda terus berfungsi secara normal, dan aplikasi berbasis Windows 16-bit yang berjalan di VDM terpisah memiliki antrean input terpisah. Ini berarti bahwa jika satu aplikasi berhenti merespons sesaat, aplikasi di VDM terpisah terus menerima input. Kerugian berjalan secara terpisah adalah dibutuhkan lebih banyak memori untuk melakukannya secara signifikan. Anda harus mengatur properti ini ke True hanya jika pengguna meminta aplikasi berbasis Windows 16-bit berjalan di VDM mereka sendiri.

Catatan

CommandLineEventConsumer menggunakan metode CreateProcess secara internal, dan meneruskan properti ExecutablePath dan CommandLineTemplate sebagai parameter lpApplicationName dan lpCommandLine. Contoh kode Managed Object Format (MOF) berikut ini tidak menggunakan CommandLineEventConsumer dengan benar.

instance of CommandLineEventConsumer
{
  ExecutablePath = "C:\\windows\\system32\\cscript.exe";
  CommandLineTemplate = "C:\\scripts\\MyScript.js param1 param2";
};

Metode CreateProcess meneruskan lpCommandLine sebagai argv[0], argv[1], dan sebagainya. Karena argv[0] untuk aplikasi 16-bit yang digunakan untuk dicadangkan untuk nama file yang dapat dieksekusi, kode MOF sebelumnya menghasilkan proses yang dibuat seolah-olah perintah berikut dimasukkan pada prompt perintah: c:\windows\system32\cscript.exe param1 param2.

Perintah sebelumnya tidak berhasil karena Cscript.exe tidak melihat argv[0], sehingga tidak mengenali bahwa perintah tersebut tidak berisi namanya sendiri, tetapi sesuatu yang lain ("c:\\scripts\\MyScript.js"). Contoh berikut mengidentifikasi penggunaan CommandLineEventConsumer yang direkomendasikan.

instance of CommandLineEventConsumer
{
  ExecutablePath = "C:\\windows\\system32\\cscript.exe";
  CommandLineTemplate = "C:\\windows\\system32\\cscript.exe"
    "C:\\scripts\\MyScript.js param1 param2";
};

Penggunaan commandLineEventConsumer sebelumnya menghasilkan proses yang dibuat seolah-olah perintah berikut dimasukkan pada prompt perintah: c:\windows\system32\cscript.exe c:\scripts\MyScript.js param1 param2

Karena "c:\\scripts\\MyScript.js" sekarang argv[1], itu dilihat oleh Cscript.exe dan perintah berhasil.

Untuk informasi selengkapnya, lihat fungsi CreateProcess .

Contoh

Untuk contoh penggunaan CommandLineEventConsumer untuk membuat konsumen, lihat Menjalankan Program dari Baris Perintah Berdasarkan Peristiwa.

Persyaratan

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

Lihat juga

Kelas Konsumen Standar

Memantau dan Merespons Peristiwa dengan Konsumen Standar

Membuat Konsumen Logis

Menerima Peristiwa Setiap Saat

__EventConsumer