Iniciar serviço do Agendador de tarefas como minimizado

2

Depois de criar uma tarefa agendada depois de seguir esta pergunta de superusuário , posso iniciar um serviço com êxito sem o prompt do UAC. As opções selecionadas foram:

  • Start a program
  • Program\script = C:\Windows\System32\net.exe
  • Add arguments (optional) = start "SERVICE-NAME"

Então, em um arquivo em lote, eu chamo schtasks /run /tn TASK-NAME . Depois de testar isso, criei um atalho para o arquivo em lote e configurei a opção Run para Minimised .

Isso tudo funciona, exceto que, quando o serviço real é iniciado, uma janela de prompt de comandos maximizada é exibida com a única linha The SERVICE-NAME service is starting . Isso então desaparece depois de alguns segundos.

Como posso dizer ao Agendador de Tarefas para iniciar o programa de destino silenciosamente (ou minimizado) sem o pop-up? Se o prompt de comando pop-up fosse minimizado, tudo bem.

    
por AlainD 02.10.2017 / 12:35

2 respostas

2

O problema é que quando você configura o atalho para rodar minimizado você inicia minimizado apenas o programa que inicia a tarefa agendada, não o programa que a tarefa executa. Você precisa de outra peça na sua sequência de lançamento da máquina de Rube Goldberg, faça as seguintes alterações:

  • Program\script = C:\Windows\System32\cmd.exe
  • Add arguments (optional) = /c start /min net start "SERVICE-NAME"

O primeiro "start" é o comando cmd.exe start , que usamos para duas funções:

  1. Iniciar net.exe minimizado.
  2. Faça taskeng.exe terminar assim que net.exe for iniciado em vez de esperar que ele termine.

Observe que esta solução não é perfeita, pois taskeng.exe piscará brevemente até que net.exe seja lançado, mas geralmente menos de um segundo.

    
por 03.10.2017 / 00:24
0

Você pode iniciar um serviço (ou qualquer outro programa) sem nenhuma janela piscando, nem mesmo minimizado .

Crie uma tarefa:

  • Comando / script: mshta.exe
  • Adicionar argumentos (opcional):
    "javascript: new ActiveXObject('shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"

Como você deseja iniciar um serviço, precisa de direitos administrativos, portanto, marque Executar com privilégios mais altos na primeira guia.

Para executar a tarefa sem mostrar nenhuma janela, use o mesmo truque. Crie um atalho com o seguinte comando:

mshta.exe "javascript: new ActiveXObject('shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"

Notas

  • O usuário que executa o atalho deve ser um administrador porque os usuários normais pode executar apenas suas tarefas e essa tarefa é uma com maior privilégios. Caso contrário, o comando schtasks falhará com "acesso negado".
  • Se a tarefa estiver em uma pasta de tarefas, o /tn <TASK-NAME> é /tn <FOLDER>\<TASK> do shell e você deverá dobrar o backslash para escapar do comando mshta do atalho.
  • Alguns programas antivírus (pelo menos o Kaspersky) podem considerar uma tarefa usando mshta desta forma como suspeito ou um risco potencial, e assim exclua-o.
  • Você pode usar esse truque para executar qualquer programa oculto sem aparecer. Basta substituir net.exe pelo nome do programa e start <SERVICE-NAME> pelos parâmetros necessários.
por 04.07.2018 / 18:05