taskmgr.exe mit einem Argument von Windows 7 aufgerufen

12

Ich habe festgestellt , dass Windows als Befehl aufruft, wenn ich Ctrl+ Alt+ drücke Delund auf Task-Manager taskmgr.exe /3klicke. Mehrere Websites behaupten, der Task-Manager habe keine Befehlszeilenargumente.

Task-Manager-Prozesse im Prozess-Explorer

Warum bringt Windows dieses Argument an?

modiX
quelle
Darüber hinaus gibt es eine andere, geringere Gewichtung LaunchTM.exein %windir%\System32dem kann nicht herausfinden es noch verwirrender als ich macht, auch auf meiner Google - Suche zu stützen, dessen Zweck der Existenz und das, was es ist gut für die im Allgemeinen.
@ Chinggis6 Es gibt keine LaunchTM.exein Windows 7, du bist auf Windows 8, denke ich. Warum nicht gleich hier im Superuser eine neue Frage dazu erstellen ? ;)
modiX

Antworten:

13

Analyse

Anscheinend ist es kein dokumentiertes Verhalten. Ich habe einige Tests durchgeführt und meine Ergebnisse notiert:

  • Klicken Sie mit der rechten Maustaste auf die Taskleiste, und klicken Sie auf Task-Manager starten .

    "C:\Windows\system32\taskmgr.exe" /4
    
  • Drücken Sie Ctrl+ Shift+ Esc.

    taskmgr.exe /2
    
  • Drücken Sie Ctrl+ Alt+ Delund klicken Sie auf Task-Manager starten .

    taskmgr.exe /3
    
  • Starten Sie einen Task-Manager ohne Berechtigungen, und klicken Sie auf die Schaltfläche Prozesse von allen Benutzern anzeigen.

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Geben oder fügen Sie taskmgr.exein die Suchleiste des Startmenüs ein und drücken Sie Enter; Drücken Sie Win+ R, geben Sie etwas taskmgr.exein das Textfeld ein oder fügen Sie es ein, und drücken Sie Enter; Navigieren Sie zu dem System32Ordner und doppelklicken Sie auf die taskmgr.exeausführbare Datei. Starten Sie das Systemkonfigurationsprogramm ( msconfig.exe), klicken Sie auf die Werkzeuge Registerkarte, wählen Sie aus der Liste den Task - Manager Element, und klicken Sie auf Starten .

    "C:\Windows\system32\taskmgr.exe"
    
  • Öffnen Sie eine Eingabeaufforderung, geben Sie oder fügen Sie ein taskmgr.exe, und drücken Sie Enter.

    taskmgr.exe
    

Bemerkungen

  • Ähnlich lief es in der Entwicklungsphase von Windows 8 bis zur Release Preview. Windows Vista und frühere Betriebssysteme sind nicht betroffen.

  • Die ausführbare Datei importiert einige API- Funktionen (nämlich GetCommandLineWund CommandLineToArgvW), mit denen Befehlszeilenargumente abgerufen und analysiert werden.

  • Das manuelle Starten des Programms mit einem der oben genannten Argumente scheint keine nennenswerten Auswirkungen zu haben.

Wenn ich eine fundierte Vermutung anstellen müsste, würde ich sagen, dass der numerische Parameter ein interner Startindikator sein soll, der möglicherweise für Debugging-Zwecke verwendet und dann zurückgelassen wird.

und31415
quelle
5
"taskmgr / 7 / startup" => Starten Sie mit der Registerkarte "Start" voran! (Windows 8.1) - aber das macht weder "taskmgr / startup / 7" noch "taskmgr / startup"! (Extra Kredit: Bitte erklären Sie den Befehlszeilen-Parsing-Algorithmus von taskmgr.exe angesichts dieser Beweise ...)
Davidbak
1
@davidbak taskmgr /anything /startupfunktioniert also /startupals zweites Argument.
Michel de Ruiter
@MicheldeRuiter - Ja. Hätte es sie getötet, Argumente in beliebiger Reihenfolge zuzulassen? Verursacht zusätzliche Arbeit in der Qualitätssicherung? Schiffstermin verschoben? HUH ????
Davidbak
2

Ein paar Anmerkungen:

Nur weil ein Befehl gesendet wird, bedeutet dies nicht, dass ein Programm diese oder andere Argumente akzeptiert.

Zum Beispiel:

Ich rief den Taskmanager mit meinem eigenen seltsamen Befehl an und das Verhalten änderte sich nicht:

Bildbeschreibung hier eingeben

Unter dem Gesichtspunkt der Grundprogrammierung verfügt jede Anwendung über eine Art Hauptmethode, mit der Argumente übergeben werden können . Eine grundlegende Windows Form C # -Anwendung sieht beispielsweise folgendermaßen aus:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Wenn ich ein paar lustige Argumente eingebe, passiert nichts mit der Anwendung, aber Process Explorer fängt sie ab und zeigt sie an.

Bildbeschreibung hier eingeben

Wenn ich mich jedoch ausdrücklich dafür entscheide, werden Sie vom Befehl eine Interaktion erhalten.

Bildbeschreibung hier eingeben

Und alles, was ich tun musste, war den Einstiegspunkt des Formulars leicht zu ändern:

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

            this.Text = arguments;
        }

Nun zurück zu Ihrer Frage, warum es dort ist:

Wenn Sie über die ctrl+ alt+ del-Methode auf taskmgr.exe zugreifen, wird in der Tat das Befehlsargument "/ 3" angezeigt . Auch wenn Sie ctrl+ shift+ verwenden esc, passiert es / 2 und wenn Sie mit der rechten Maustaste auf die Taskleiste klicken und auf "Task-Manager starten" klicken, ist der gezeigte Schalter / 4.

All dies lässt mich annehmen, dass Windows möglicherweise etwas wissen muss oder dass es fast für den Taskmanager implementiert wurde, von dem wir nichts wissen. Beispielsweise möchte die Sicherheit in Windows möglicherweise wissen, ob ctrl+ alt+ delzum Aufrufen von taskmgr.exe und nicht für ein Skript oder einen Benutzer verwendet wurde. Auch hier lassen reine Spekulationen, aber solche Themen mich denken, dass es zumindest ein Gedanke gewesen sein könnte.


Für den berüchtigten tl; dr

Um zu wissen, warum Windows diese Befehle übergibt, benötigen wir wahrscheinlich entweder ein Mitglied des Microsoft-Entwicklungsteams oder den Quellcode. Es könnte keine bessere Antwort geben.

Austin T Französisch
quelle