taskmgr.exe chamado com um argumento do Windows 7

13

Percebi que quando pressiono Ctrl+ Alt+ Dele clico em Gerenciador de tarefas, o Windows chama taskmgr.exe /3como o comando. Vários sites afirmam que o Gerenciador de Tarefas não possui argumentos de linha de comando.

Processos do Gerenciador de tarefas no Process Explorer

Por que o Windows anexa esse argumento?

Martin Braun
fonte
Além disso, há uma outra, menor ponderação LaunchTM.exeno %windir%\System32que torna ainda mais confuso como eu não conseguia descobrir, baseando-se em minha busca google, bem como, o seu propósito de existência eo que é bom para em geral.
@ Chinggis6 Não há LaunchTM.exeno Windows 7, você está no Windows 8, eu acho. Por que não criar uma nova pergunta sobre isso aqui no superusuário? ;)
Martin Braun

Respostas:

13

Análise

Aparentemente, não é um comportamento documentado. Fiz alguns testes e observei minhas descobertas:

  • Clique com o botão direito do mouse na barra de tarefas e clique em Iniciar Gerenciador de Tarefas .

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

    taskmgr.exe /2
    
  • Pressione Ctrl+ Alt+ Dele clique em Iniciar Gerenciador de Tarefas .

    taskmgr.exe /3
    
  • Inicie um Gerenciador de tarefas não elevado e clique no botão Mostrar processos de todos os usuários .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Digite ou cole taskmgr.exena barra de pesquisa do menu Iniciar e pressione Enter; pressione Win+ R, digite ou cole taskmgr.exena caixa de texto e pressione Enter; navegue até a System32pasta e clique duas vezes no taskmgr.exeexecutável; inicie o utilitário de configuração do sistema ( msconfig.exe), clique na guia Ferramentas , selecione o item do Gerenciador de tarefas na lista e clique em Iniciar .

    "C:\Windows\system32\taskmgr.exe"
    
  • Abra um prompt de comando, digite ou cole taskmgr.exee pressione Enter.

    taskmgr.exe
    

Observações

  • As coisas funcionaram de maneira semelhante durante a fase de desenvolvimento do Windows 8, até a Release Preview. O Windows Vista e os sistemas operacionais anteriores não são afetados.

  • As importações executáveis um par de API funções (nomeadamente GetCommandLineWe CommandLineToArgvW) que são usados para recuperar e argumentos de linha de comando de análise.

  • Iniciar manualmente o programa usando qualquer um dos argumentos acima parece não ter nenhum efeito perceptível.

Se eu tivesse que fazer um palpite, eu diria que o parâmetro numérico deveria ser um indicador de inicialização interno, possivelmente usado para fins de depuração e depois deixado para trás.

and31415
fonte
5
"taskmgr / 7 / startup" => comece com a aba Inicializar na frente! (Windows 8.1) - mas nem "taskmgr / startup / 7" nem "taskmgr / startup" fazem isso! (Crédito extra: Por favor, explique o algoritmo de linha de comando análise de taskmgr.exe dada esta evidência ...)
davidbak
1
O @davidbak taskmgr /anything /startupfunciona, assim /startupcomo o segundo argumento.
Michel de Ruiter
@MicheldeRuiter - Sim. Teria matado eles para permitir argumentos em qualquer ordem? Causou trabalho extra no controle de qualidade? Atraso na data de envio? HÃ????
Davidbak
2

Algumas notas:

Só porque um comando é enviado, não significa que um programa aceite esses argumentos, ou qualquer outro.

Por exemplo:

Liguei para taskmanager com meu próprio comando ímpar e o behavoir não mudou:

insira a descrição da imagem aqui

Do ponto de vista da programação básica, qualquer aplicativo terá um método principal de algum tipo no qual argumentos podem ser passados. Por exemplo, um aplicativo básico do Windows Form C # se parece com:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Se eu passar alguns argumentos engraçados, nada acontece com o aplicativo, mas o Process Explorer os captura e os exibe.

insira a descrição da imagem aqui

Se eu decidir explicitamente lidar com eles, você obterá interação do comando.

insira a descrição da imagem aqui

E tudo que eu tinha que fazer era mudar um pouco o ponto de entrada do formulário:

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

            this.Text = arguments;
        }

Agora, voltemos à sua pergunta sobre por que ela está lá:

Se você acessar taskmgr.exe a partir do método ctrl+ alt+ del, verá o argumento de comando "/ 3". Além disso, se você usar ctrl+ shift+ esc, passa em / 2 e se clicar com o botão direito do mouse na barra de tarefas e clicar em "Iniciar Gerenciador de Tarefas", a opção mostrada será / 4.

Tudo isso me leva a supor que talvez exista algo que o Windows precise saber ou talvez tenha sido quase implementado para o Gerenciador de Tarefas que desconhecemos. Por exemplo, a segurança no Windows pode querer saber se o ctrl+ alt+ delfoi usado para chamar taskmgr.exe e não um script ou usuário. Novamente, pura especulação, mas tópicos como esse me fazem pensar que poderia ter sido pelo menos um pensamento.


Para o infame tl; dr

Para saber por que o Windows passa esses comandos, provavelmente precisamos de um membro da equipe de desenvolvimento da Microsoft ou do código-fonte. Pode não haver uma resposta melhor.

Austin T Francês
fonte