taskmgr.exe appelé avec un argument par Windows 7

13

J'ai remarqué lorsque j'appuie sur Ctrl+ Alt+ Delet que je clique sur Gestionnaire des tâches, les appels Windows taskmgr.exe /3comme commande. Plusieurs sites Web affirment que le Gestionnaire des tâches n'a aucun argument de ligne de commande.

Processus du Gestionnaire des tâches dans l'Explorateur de processus

Pourquoi Windows attache-t-il cet argument?

Martin Braun
la source
De plus, il y a une autre, moins pondération LaunchTM.exedans ce %windir%\System32qui le rend encore plus confus que je ne pouvais pas comprendre, en se basant sur ma recherche de Google, ainsi, son but d'existance et ce qu'il est bon pour en général.
@ Chinggis6 Il n'y LaunchTM.exeen a pas dans Windows 7, vous êtes sur Windows 8 je pense. Pourquoi ne pas créer ici une nouvelle question à ce sujet sur le superutilisateur? ;)
Martin Braun

Réponses:

13

Une analyse

Apparemment, ce n'est pas un comportement documenté. J'ai fait quelques tests et noté mes résultats:

  • Cliquez avec le bouton droit sur la barre des tâches, puis cliquez sur Démarrer le Gestionnaire des tâches .

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

    taskmgr.exe /2
    
  • Appuyez sur Ctrl+ Alt+ Del, puis sur Démarrer le Gestionnaire des tâches .

    taskmgr.exe /3
    
  • Démarrez un gestionnaire de tâches non élevé et cliquez sur le bouton Afficher les processus de tous les utilisateurs .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Tapez ou collez taskmgr.exedans la barre de recherche du menu Démarrer, puis appuyez sur Enter; appuyez sur Win+ R, saisissez ou collez taskmgr.exedans la zone de texte, puis appuyez sur Enter; accédez au System32dossier et double-cliquez sur l' taskmgr.exeexécutable; démarrez l'utilitaire de configuration système ( msconfig.exe), cliquez sur l' onglet Outils , sélectionnez l'élément Gestionnaire des tâches dans la liste, puis cliquez sur Lancer .

    "C:\Windows\system32\taskmgr.exe"
    
  • Ouvrez une invite de commande, saisissez ou collez taskmgr.exe, puis appuyez sur Enter.

    taskmgr.exe
    

Remarques

  • Les choses ont fonctionné de manière similaire pendant la phase de développement de Windows 8, jusqu'à la Release Preview. Windows Vista et les systèmes d'exploitation antérieurs ne sont pas affectés.

  • L'exécutable importe quelques fonctions API (à savoir GetCommandLineWet CommandLineToArgvW) qui sont utilisées pour récupérer et analyser les arguments de ligne de commande.

  • Le démarrage manuel du programme en utilisant l'un des arguments ci-dessus ne semble pas avoir d'effet notable.

Si je devais faire une supposition éclairée, je dirais que le paramètre numérique était censé être un indicateur de démarrage interne, éventuellement utilisé à des fins de débogage, puis laissé de côté.

et31415
la source
5
"taskmgr / 7 / startup" => commencez avec l'onglet Démarrage devant! (Windows 8.1) - mais ni "taskmgr / startup / 7" ni "taskmgr / startup" ne font ça! (Crédit supplémentaire: veuillez expliquer l'algorithme d'analyse de la ligne de commande de taskmgr.exe compte tenu de ces preuves ...)
davidbak
1
@davidbak taskmgr /anything /startupfonctionne, donc /startupcomme deuxième argument.
Michel de Ruiter
@MicheldeRuiter - Oui. Les aurait-il tués pour permettre des arguments dans n'importe quel ordre? Causé un travail supplémentaire en QA? Retardé la date d'expédition? HUH ????
davidbak
2

Quelques notes:

Le simple fait qu'une commande soit envoyée ne signifie pas qu'un programme accepte ces arguments ou tout autre argument.

Par exemple:

J'ai appelé taskmanager avec ma propre commande étrange et le comportement n'a pas changé:

entrez la description de l'image ici

Du point de vue de la programmation de base, n'importe quelle application aura une méthode principale quelconque où les arguments peuvent être passés. Par exemple, une application Windows Form C # de base ressemble à quelque chose comme:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Si je passe des arguments amusants, rien ne se passe avec l'application, mais Process Explorer les intercepte et les affiche.

entrez la description de l'image ici

Cependant, si je décide explicitement de les gérer, vous obtiendrez une interaction à partir de la commande.

entrez la description de l'image ici

Et tout ce que j'avais à faire était de changer légèrement le point d'entrée du formulaire:

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

            this.Text = arguments;
        }

Maintenant, revenons à votre question sur pourquoi il est là:

Si vous accédez à taskmgr.exe à partir de la méthode ctrl+ alt+ del, vous voyez en effet l'argument de commande "/ 3". De plus, si vous utilisez ctrl+ shift+, escil passe / 2 et si vous cliquez avec le bouton droit sur la barre des tâches et cliquez sur "Démarrer le Gestionnaire des tâches", le commutateur affiché est / 4.

Tout cela m'amène à supposer qu'il y a peut-être quelque chose que Windows doit savoir, ou peut-être a été presque implémenté pour le gestionnaire de tâches que nous ne connaissons pas. Par exemple, la sécurité dans Windows peut vouloir savoir si ctrl+ alt+ a delété utilisé pour appeler taskmgr.exe et non un script ou un utilisateur. Encore une fois, de la pure spéculation, mais des fils comme celui-ci me font penser que cela aurait pu être au moins une pensée.


Pour l'infâme tl; dr

Pour savoir pourquoi Windows passe ces commandes, nous avons probablement besoin d'un membre de l'équipe de développement de Microsoft ou du code source. Il n'y a peut-être pas de meilleure réponse.

Austin T français
la source