taskmgr.exe llamado con un argumento por Windows 7


13

Me di cuenta cuando presiono Ctrl+ Alt+ Dely hago clic en Administrador de tareas, Windows llama taskmgr.exe /3como el comando. Varios sitios web afirman que el Administrador de tareas no tiene argumentos de línea de comandos.

Procesos del Administrador de tareas en el Explorador de procesos

¿Por qué Windows adjunta este argumento?


Por otra parte, hay otro, en menor ponderación LaunchTM.exeen %windir%\System32lo que hace aún más confuso ya que no pude averiguar, basándose en mi búsqueda de google, así, su propósito de existencia y lo que es bueno en general.

@ Chinggis6 No hay LaunchTM.exeen Windows 7, creo que está en Windows 8. ¿Por qué no crear una nueva pregunta sobre esto aquí en superusuario? ;)
Martin Braun

Respuestas:


13

Análisis

Aparentemente no es un comportamiento documentado. Hice algunas pruebas y noté mis hallazgos:

  • Haga clic con el botón derecho en la barra de tareas y haga clic en Iniciar el Administrador de tareas .

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

    taskmgr.exe /2
    
  • Presione Ctrl+ Alt+ Dely haga clic en Iniciar el Administrador de tareas .

    taskmgr.exe /3
    
  • Inicie un Administrador de tareas no elevado y haga clic en el botón Mostrar procesos de todos los usuarios .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Escriba o pegue taskmgr.exeen la barra de búsqueda del menú Inicio y presione Enter; presione Win+ R, escriba o pegue taskmgr.exeen el cuadro de texto y presione Enter; navegue a la System32carpeta y haga doble clic en el taskmgr.exeejecutable; inicie la utilidad de Configuración del sistema ( msconfig.exe), haga clic en la pestaña Herramientas , seleccione el elemento Administrador de tareas de la lista y haga clic en Iniciar .

    "C:\Windows\system32\taskmgr.exe"
    
  • Abra un símbolo del sistema, escriba o pegue taskmgr.exey presione Enter.

    taskmgr.exe
    

Observaciones

  • Las cosas funcionaron de manera similar durante la fase de desarrollo de Windows 8, hasta la Vista previa de lanzamiento. Windows Vista y sistemas operativos anteriores no se ven afectados.

  • El ejecutable importa un par de funciones API (a saber, GetCommandLineWy CommandLineToArgvW) que se utilizan para recuperar y analizar argumentos de línea de comandos.

  • El inicio manual del programa utilizando cualquiera de los argumentos anteriores no parece tener ningún efecto notable.

Si tuviera que hacer una suposición educada, diría que el parámetro numérico fue un indicador interno de inicio, posiblemente usado para propósitos de depuración y luego dejado atrás.


55
"taskmgr / 7 / startup" => ¡comience con la pestaña Inicio al frente! (Windows 8.1), ¡pero ni "taskmgr / startup / 7" ni "taskmgr / startup" hacen eso! (Crédito adicional: explique el algoritmo de análisis de línea de comandos de taskmgr.exe dada esta evidencia ...)
davidbak

1
@davidbak taskmgr /anything /startupfunciona, así /startupcomo el segundo argumento.
Michel de Ruiter

@MicheldeRuiter - Sí. ¿Les habría matado permitir argumentos en cualquier orden? ¿Causó trabajo extra en QA? ¿Retrasó la fecha de envío? HUH ????
davidbak

2

Algunas notas

El hecho de que se envíe un comando no significa que un programa acepte esos argumentos, ni ninguno.

Por ejemplo:

Llamé a taskmanager con mi propio comando impar y el comportamiento no cambió:

ingrese la descripción de la imagen aquí

Desde el punto de vista de la programación básica, cualquier aplicación tendrá un método principal de algún tipo en el que se pueden pasar argumentos . Por ejemplo, una aplicación básica de Windows Form C # se parece a:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Si paso algunos argumentos divertidos, no pasa nada con la aplicación, pero Process Explorer los capturará y mostrará.

ingrese la descripción de la imagen aquí

Sin embargo, si decido explícitamente manejarlos, obtendrá la interacción del comando.

ingrese la descripción de la imagen aquí

Y todo lo que tuve que hacer fue cambiar ligeramente el punto de entrada del formulario:

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

            this.Text = arguments;
        }

Ahora, volviendo a su pregunta sobre por qué está allí:

Si accede a taskmgr.exe desde el método ctrl+ alt+ del, verá el argumento de comando "/ 3". Además, si usa ctrl+ shift+ esc, pasa / 2 y si hace clic derecho en la barra de tareas y hace clic en "Iniciar el Administrador de tareas", el modificador que se muestra es / 4.

Todo esto me lleva a suponer que tal vez hay algo que Windows necesita saber, o tal vez casi se implementó para el Administrador de tareas que no conocemos. Por ejemplo, la seguridad en Windows podría querer saber si se usó ctrl+ alt+ delpara llamar a taskmgr.exe y no un script o usuario. Una vez más, la pura especulación, pero los hilos como este me hacen pensar que podría haber sido al menos un pensamiento.


Para el infame tl; dr

Para saber por qué Windows pasa estos comandos, es probable que necesitemos un miembro del equipo de desarrollo de Microsoft o el código fuente. Puede que no haya una mejor respuesta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.