taskmgr.exe chamado com um argumento pelo Windows 7

12

Eu notei quando pressione Ctrl + Alt + Del e clique em Gerenciador de tarefas, o Windows chama taskmgr.exe /3 como o comando. Vários sites afirmam que o Gerenciador de Tarefas não possui argumentos de linha de comando.

Por que o Windows anexa esse argumento?

    
por modiX 14.05.2014 / 22:55

2 respostas

13

Análise

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

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

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

    taskmgr.exe /2
    
  • Pressione Ctrl + Alt + Del e 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.exe na barra de pesquisa do menu Iniciar e pressione Enter ; pressione Win + R , digite ou cole taskmgr.exe na caixa de texto e pressione Enter ; navegue até a pasta System32 e clique duas vezes no executável taskmgr.exe ; Inicie o utilitário de configuração do sistema ( msconfig.exe ), clique na guia Ferramentas , selecione o item Gerenciador de tarefas na lista e clique em Iniciar .

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

    taskmgr.exe
    

Observações

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

  • O executável importa algumas funções API (ou seja, GetCommandLineW e CommandLineToArgvW ) que são usado para recuperar e analisar argumentos da linha de comando.

  • O início manual do programa usando qualquer um dos argumentos acima não parece ter nenhum efeito perceptível.

Se eu tivesse que dar 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.

    
por 15.05.2014 / 23:35
2

Algumas notas:

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

Por exemplo:

Liguei para o gerenciador de tarefas com meu próprio comando ímpar e o comportamento não mudou:

Deumpontodevistadeprogramaçãobásica,qualqueraplicativoteráummétodoprincipaldealgumtipoondeosargumentospodemserpassados.Porexemplo,umaplicativobásicodoWindowsFormC#éparecidocom:

privatevoidForm1_Load(objectsender,EventArgse){}

Seeupassaralgunsargumentosengraçados,nadaacontececomoaplicativo,masoProcessExplorerirácapturareexibi-los.

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

Etudooquetivedefazerfoialterarligeiramenteopontodeentradadoformulário:

privatevoidForm1_Load(objectsender,EventArgse){stringarguments=Environment.GetCommandLineArgs()[1];this.Text=arguments;}

Agora,voltemosàsuaperguntasobreomotivo:

Sevocêacessartaskmgr.exedométodoctrl+alt+del,veráoargumentodecomando"/ 3" . Além disso, se você usar ctrl + shift + esc , ele passará / 2 e se você clicar com o botão direito na barra de tarefas e clicar em "Iniciar Gerenciador de Tarefas", o interruptor mostrado é / 4.

Tudo isso me leva a supor que talvez exista algo que o Windows precisa saber ou que talvez tenha sido implementado para o Gerenciador de Tarefas que não conhecemos. Por exemplo, a segurança no Windows pode querer saber se ctrl + alt + del foi 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 pode ter sido pelo menos um pensamento.

Para o infame tl; dr

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

    
por 15.05.2014 / 05:41