taskmgr.exe dipanggil dengan argumen oleh Windows 7

13

Saya perhatikan ketika saya menekan Ctrl+ Alt+ Deldan klik Task Manager, panggilan Windows taskmgr.exe /3sebagai perintah. Beberapa situs web mengklaim bahwa Pengelola Tugas tidak memiliki argumen baris perintah.

Proses Pengelola Tugas di Process Explorer

Mengapa Windows melampirkan argumen ini?

Martin Braun
sumber
Selain itu, ada lagi, bobot yang lebih rendah LaunchTM.exedi %windir%\System32mana membuatnya lebih membingungkan karena saya tidak tahu, berdasarkan pencarian google saya juga, tujuan keberadaannya dan apa yang baik untuk secara umum.
@ Chinggis6 Tidak ada LaunchTM.exedi Windows 7, Anda berada di Windows 8 saya pikir. Mengapa tidak membuat pertanyaan baru tentang ini di sini di superuser? ;)
Martin Braun

Jawaban:

13

Analisis

Rupanya itu bukan perilaku yang terdokumentasi. Saya melakukan beberapa tes, dan mencatat temuan saya:

  • Klik kanan bilah tugas, dan klik Mulai Pengelola Tugas .

    "C:\Windows\system32\taskmgr.exe" /4
    
  • Tekan Ctrl+ Shift+ Esc.

    taskmgr.exe /2
    
  • Tekan Ctrl+ Alt+ Del, dan klik Mulai Pengelola Tugas .

    taskmgr.exe /3
    
  • Mulai Pengelola Tugas yang tidak ditinggikan, dan klik tombol Tampilkan proses dari semua pengguna .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Ketik atau rekatkan taskmgr.exedi bilah pencarian menu Mulai, dan tekan Enter; tekan Win+ R, ketik atau rekatkan taskmgr.exedi kotak teks, dan tekan Enter; arahkan ke System32folder dan klik dua kali yang taskmgr.exedapat dieksekusi; mulai utilitas Konfigurasi Sistem ( msconfig.exe), klik tab Tools , pilih item Task Manager dari daftar, dan klik Launch .

    "C:\Windows\system32\taskmgr.exe"
    
  • Buka prompt perintah, ketik atau rekatkan taskmgr.exe, dan tekan Enter.

    taskmgr.exe
    

Catatan

  • Berbagai hal bekerja dengan cara yang sama selama fase pengembangan Windows 8, hingga Preview Rilis. Windows Vista dan sistem operasi sebelumnya tidak terpengaruh.

  • Eksekusi dapat mengimpor beberapa fungsi API (yaitu GetCommandLineWdan CommandLineToArgvW) yang digunakan untuk mengambil dan mem-parsing argumen baris perintah.

  • Memulai program secara manual menggunakan argumen apa pun di atas tampaknya tidak memiliki efek nyata.

Jika saya harus membuat tebakan yang berpendidikan, saya akan mengatakan bahwa parameter numerik dimaksudkan sebagai indikator startup internal, mungkin digunakan untuk keperluan debugging dan kemudian ditinggalkan.

and31415
sumber
5
"taskmgr / 7 / startup" => mulai dengan tab Startup di depan! (Windows 8.1) - tetapi "taskmgr / startup / 7" atau "taskmgr / startup" tidak melakukannya! (Kredit ekstra: Tolong jelaskan algoritma penguraian baris perintah dari taskmgr.exe diberikan bukti ini ...)
davidbak
1
@davidbak taskmgr /anything /startupberfungsi, jadi /startupargumen kedua.
Michel de Ruiter
@MicheldeRuiter - Ya. Apakah itu akan membunuh mereka untuk mengizinkan argumen dalam urutan apa pun? Menyebabkan pekerjaan tambahan di QA? Tertunda tanggal pengiriman? HAH????
davidbak
2

Beberapa catatan:

Hanya karena perintah dikirim, tidak berarti bahwa suatu program menerima argumen itu, atau apa pun.

Sebagai contoh:

Saya menelepon taskmanager dengan perintah aneh saya sendiri dan behavoir tidak berubah:

masukkan deskripsi gambar di sini

Dari sudut pandang pemrograman dasar, aplikasi apa pun akan memiliki metode utama di mana argumen dapat diajukan. Sebagai contoh aplikasi Windows Form C # dasar terlihat seperti:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Jika saya melewati beberapa argumen lucu, tidak ada yang terjadi dengan aplikasi tersebut, tetapi Process Explorer akan menangkap dan menampilkannya.

masukkan deskripsi gambar di sini

Jika saya secara eksplisit memutuskan untuk menanganinya, Anda akan mendapatkan interaksi dari perintah.

masukkan deskripsi gambar di sini

Dan yang harus saya lakukan adalah mengubah sedikit titik masuk formulir:

private void Form1_Load(object sender, EventArgs e)
        {
            string arguments = Environment.GetCommandLineArgs()[1];

            this.Text = arguments;
        }

Sekarang, kembali ke pertanyaan Anda mengapa ada:

Jika Anda mengakses taskmgr.exe dari metode ctrl+ alt+ del, Anda memang melihat argumen perintah "/ 3". Juga jika Anda menggunakan ctrl+ shift+ escmelewati / 2 dan jika Anda mengklik kanan bilah tugas dan klik "Mulai Pengelola Tugas", saklar yang ditampilkan adalah / 4.

Semua ini membuat saya berasumsi mungkin ada sesuatu yang perlu diketahui Windows, atau mungkin hampir diimplementasikan untuk Taskmanager yang tidak kita ketahui. Misalnya, keamanan di Windows mungkin ingin tahu apakah ctrl+ alt+ deldigunakan untuk memanggil taskmgr.exe dan bukan skrip atau pengguna. Sekali lagi, spekulasi murni tetapi utas seperti ini membuat saya berpikir itu mungkin paling tidak sebuah pemikiran.


Untuk tl terkenal ; dr

Untuk mengetahui mengapa Windows melewati perintah-perintah ini, kami kemungkinan membutuhkan anggota tim pengembangan Microsoft, atau kode sumber. Mungkin tidak ada jawaban yang lebih baik.

Austin T French
sumber