por que a tarefa do agendador de tarefas do Windows 7 falha com o erro 2147942667

133

Estou enfrentando um problema estranho. Eu agendei uma tarefa para lançar um arquivo em lotes. Quando executo a tarefa com a opção Run only when user is logged ontudo funciona bem. mas eu quero executar esta tarefa em segundo plano e, portanto, estou executando-lo usando a opção Run whether user is logged on or not. Agora, quando executo a tarefa, ela não está funcionando. Eu recebo 2 erros a seguir. Eu não entendo esse erro. Ajude-me a resolver esse problema.

 Task Scheduler failed to launch action "C:\Windows\SYSTEM32\cmd.exe" in instance "{2a7cc950-fad9-4633-9701-af75a0fd220d}" of task "\stmm\Daemon". Additional Data: Error Value: 2147942667.
 Task Scheduler failed to start instance "{2a7cc950-fad9-4633-9701-af75a0fd220d}" of "\stmm\Daemon"  task for user "GBLADHEDANI\N011940" . Additional Data: Error Value: 2147942667.
Alok
fonte
41
Converta o código de erro em hexadecimal para obter 0x8007010B. O 7 torna um erro do Windows. O que torna o código de erro 010B 267. "O nome do diretório é inválido". Claro, isso acontece.
precisa
1
@HansPassant, isso é brilhante. Converta em hexadecimal, use os últimos quatro bytes para procurar o código de erro. Espero que eu me lembre desse!
Mark Berry
FWIW Encontrei que a interface do usuário principal do Agendador de Tarefas tinha a tarefa com uma 'Última Resultado da Execução' ou uma coluna semelhante, mostrando uma mensagem de erro legível 'O nome do diretório é inválido'. A correção em nossa situação foi a resposta do jp2code abaixo sobre a remoção de aspas da pasta Start In, porque eu a copiei do comando citado para executar.
Neek
Portanto, meu problema que resultou em 2147942667 acabou por ser devido a uma unidade mapeada. Quando defino os caminhos "Programa / script" e "Iniciar em" para usar o UNC completo, o trabalho foi executado com êxito.
usar o seguinte comando
Para amarrar em @ excelentes Comentário do HansPassant: docs.microsoft.com/en-us/windows/win32/debug/system-error-codes
Ian Kemp

Respostas:

253

Eu tive esse mesmo problema.

A solução para mim foi encontrada no artigo 2452723 da Microsoft KB:

As tarefas agendadas do Windows Vista em diante não são executadas se o caminho no campo "Iniciar em (opcional)" tiver aspas

Basicamente, edite sua tarefa agendada e retire as aspas do campo Iniciar em:

  1. Abra sua tarefa agendada
  2. Alterne para a guia "Ações"
  3. Abra sua ação
  4. Remova aspas (") do campo" Iniciar em (opcional) "
  5. Salve e feche todas as caixas de diálogo abertas

Caixa de diálogo Editar Ação

Para receber a mensagem de erro relevante:

1) Converta 2147942667 em hex: 8007010B
2) Pegue os últimos 4 dígitos (010B) e converta em decimal: 267
3) Execute: net helpmsg 267
4) Resultado: "O nome do diretório é inválido."

Janela do prompt de comando

jp2code
fonte
5
o problema estava relacionado ao uso de permissão. Quando executado usando a opção Run whether user is logged on or not, eu estava usando um usuário diferente para executar o aplicativo. Esse novo usuário não tinha permissões apropriadas para ler os dados e, portanto, o erro. Obrigado.
Alok
1
Também não era "permissão" para mim. Foi o começo na pasta. Se houver "C:\Some Path\", isso está errado porque possui aspas. Ele precisa dizer `C: \ Some Path` (sem aspas).
Jp2code
16
Essa é a solução. Remova as aspas da caixa de texto Iniciar na pasta . Uma correção esotérica. Perdeu horas com isso - gostaria que a Microsoft tornasse mais fácil com erros úteis ou corrija esse bug óbvio.
317 Joseph
6
Pelo que vale a pena, estou recebendo esse erro, mas minha configuração Iniciar na pasta não tem aspas, pelo contrário, o caminho que foi mencionado não existia.
shufler
2
Não estou usando aspas e ainda estou obtendo o mesmo problema. @ RayofCommand: você encontrou a solução para esse problema.
User1551892
9

Para mim, foi o "Start In" - copiei os valores de um servidor antigo e atualizei o caminho para o novo local .exe, mas esqueci de atualizar o local "start in" - se ele não existir, você receba esse erro também

Citando o comentário de @ hans-passant acima, porque é valioso depurar esse problema:

Converta o código de erro em hexadecimal para obter 0x8007010B. O 7 torna um erro do Windows. O que torna o código de erro 010B 267. "O nome do diretório é inválido". Claro, isso acontece.

user230910
fonte
7

Isso pode acontecer por mais de um motivo. No meu caso, isso aconteceu devido a um problema de permissões. O usuário que a tarefa estava executando como não tinha permissão para gravar no diretório logs, falhou com este erro.

Cookalino
fonte
3

Eu tive o mesmo problema, no Windows7.

Eu estava recebendo o erro 2147942667 e um relatório de impossibilidade de executar c: \ windows \ system32 \ CMD.EXE. Tentei com e sem aspas duplas no Script e no Start-in e isso não fez diferença. Tentei substituir todas as referências de caminho para unidades de rede mapeadas e por referências UNC (\ Server1 \ Sharexx \ my_scripts \ run_this.cmd) e isso foi corrigido para mim. Pat.

Pat Fahy
fonte
Isso finalmente fez isso por mim também. Eu tive que usar "Net Use" para obter o nome do servidor e, em seguida, executar ping para obter o nome de domínio. Por fim, era \\ machine.domain.local \ app.exe. \\ Machine \ app.exe não funcionou
greg
Também fez por mim. Obrigado!
Jace
2

Para obter uma resposta mais genérica, converta o valor do erro em hexadecimal e procure o valor hexadecimal em Windows Task Scheduler Error and Success Constants

flymike
fonte
3
Olá Mike. Eu usei a calculadora do Windows no modo de programador para converter 2147942667a HEX: 0x8007010B. Esse valor não aparece no link que você forneceu. Apenas para sua informação, é claro.
Jp2code
4
Eu só Googled-lo: 2147942667 in hex. O Google também é uma calculadora agora.
Baodad 11/04
0

Para mim, foi o "Start In" - deixei acidentalmente o '.py' no final do nome do meu programa. E eu esqueci de colocar em maiúscula o nome da pasta em que estava ('Aplicativos').

Rivers Cuomo
fonte
0

Para mim, isso ocorreu devido à variável de ambiente PATH do usuário, que parecia não funcionar, mesmo que o usuário estivesse correto, então eu precisava colocar todo o caminho do executável no campo do programa.

rayzinnz
fonte