taskmgr.exe chiamato con un argomento da Windows 7


13

Ho notato che quando premo Ctrl+ Alt+ Dele faccio clic su Task Manager, Windows chiama taskmgr.exe /3come comando. Diversi siti Web affermano che Task Manager non ha argomenti da riga di comando.

Task Manager Processi in Process Explorer

Perché Windows allega questo argomento?


Inoltre, c'è un'altra, minore ponderazione LaunchTM.exein %windir%\System32cui la rende ancora più confusa come non riuscivo a capire, basandosi anche sulla mia ricerca su Google, il suo scopo di esistenza e ciò che è buono in generale.

@ Chinggis6 Non c'è LaunchTM.exein Windows 7, tu sei su Windows 8 penso. Perché non creare una nuova domanda in merito qui su superutente? ;)
Martin Braun,

Risposte:


13

Analisi

Apparentemente non è un comportamento documentato. Ho fatto alcuni test e ho notato i miei risultati:

  • Fare clic con il tasto destro sulla barra delle applicazioni e fare clic su Avvia Task Manager .

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

    taskmgr.exe /2
    
  • Premi Ctrl+ Alt+ Dele fai clic su Avvia Task Manager .

    taskmgr.exe /3
    
  • Avviare un Task Manager non elevato e fare clic sul pulsante Mostra processi da tutti gli utenti .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Digita o incolla taskmgr.exenella barra di ricerca del menu Start e premi Enter; premi Win+ R, digita o incolla taskmgr.exenella casella di testo e premi Enter; passare alla System32cartella e fare doppio clic sul taskmgr.exefile eseguibile; avviare l'utilità Configurazione di sistema ( msconfig.exe), fare clic sulla scheda Strumenti , selezionare la voce Task Manager dall'elenco e fare clic su Avvia .

    "C:\Windows\system32\taskmgr.exe"
    
  • Aprire un prompt dei comandi, digitare o incollare taskmgr.exee premere Enter.

    taskmgr.exe
    

Osservazioni

  • Le cose hanno funzionato in modo simile durante la fase di sviluppo di Windows 8, fino all'anteprima della versione. Windows Vista e i sistemi operativi precedenti non sono interessati.

  • L'eseguibile importa un paio di funzioni API (vale a dire GetCommandLineWe CommandLineToArgvW) che vengono utilizzate per recuperare e analizzare gli argomenti della riga di comando.

  • L'avvio manuale del programma utilizzando uno degli argomenti sopra non sembra avere alcun effetto evidente.

Se dovessi fare un'ipotesi plausibile, direi che il parametro numerico doveva essere un indicatore di avvio interno, probabilmente utilizzato per scopi di debug e quindi lasciato indietro.


5
"taskmgr / 7 / startup" => inizia con la scheda Startup in primo piano! (Windows 8.1) - ma né "taskmgr / startup / 7" né "taskmgr / startup" lo fanno! (Credito extra: spiega l'algoritmo di analisi della riga di comando di taskmgr.exe dato questi dati ...)
davidbak

1
@davidbak taskmgr /anything /startupfunziona, così /startupcome il secondo argomento.
Michel de Ruiter,

@MicheldeRuiter - Sì. Li avrebbe uccisi per consentire argomenti in qualsiasi ordine? Causato lavoro extra in QA? Ritardata la data di spedizione? HUH ????
davidbak,

2

Alcune note:

Solo perché viene inviato un comando, non significa che un programma accetti tali argomenti o qualsiasi.

Per esempio:

Ho chiamato taskmanager con il mio comando dispari e il comportamento non è cambiato:

inserisci qui la descrizione dell'immagine

Da un punto di vista della programmazione di base, qualsiasi applicazione avrà un metodo principale di qualche tipo in cui è possibile passare argomenti . Ad esempio, un'applicazione Windows Form C # di base è simile a:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Se passo alcuni argomenti divertenti, non succede nulla con l'applicazione, ma Process Explorer li cattura e li visualizza.

inserisci qui la descrizione dell'immagine

Se decido esplicitamente di gestirli, tuttavia, otterrai l'interazione dal comando.

inserisci qui la descrizione dell'immagine

E tutto quello che dovevo fare era cambiare leggermente il punto di ingresso del modulo:

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

            this.Text = arguments;
        }

Ora, torniamo alla tua domanda sul perché è lì:

Se accedi a taskmgr.exe dal metodo ctrl+ alt+ del, visualizzi effettivamente l'argomento comando "/ 3". Anche se usi ctrl+ shift+ escpassa / 2 e se fai clic con il pulsante destro del mouse sulla barra delle applicazioni e fai clic su "Avvia Task Manager", l'opzione visualizzata è / 4.

Tutto ciò mi porta a supporre che forse c'è qualcosa che Windows deve sapere, o forse è stato quasi implementato per il Taskmanager che non conosciamo. Ad esempio, la sicurezza in Windows potrebbe voler sapere se ctrl+ alt+ è delstato usato per chiamare taskmgr.exe e non uno script o un utente. Ancora una volta, pura speculazione ma fili come questo mi fanno pensare che potrebbe essere stato almeno un pensiero.


Per il famigerato tl; dott

Per sapere perché Windows passa questi comandi, probabilmente abbiamo bisogno di un membro del team di sviluppo di Microsoft o del codice sorgente. Potrebbe non esserci una risposta migliore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.