O Agendador de Tarefas 2008 R2 não executará tarefa, mas diz que os erros foram concluídos sem problemas

1

DESCRIÇÃO ANTIGA:

Eu tenho um aplicativo .NET que eu mesmo escrevi que estou tentando configurar para ser executado como uma tarefa agendada no Windows Server 2008 R2. Quando eu executo o aplicativo a partir da linha de comando, funciona muito bem. No entanto, quando eu configuro a tarefa, ela conclui a tarefa dentro de um segundo de quando ela inicia e diz que ela foi concluída com êxito, embora, é claro, o aplicativo NÃO tenha sido executado. Por causa disso, não recebo nenhum erro registrado pelo agendador ou pelo aplicativo. Se eu tirar o argumento ("auto"), ele "executa" a tarefa, mas nunca abre o console para exibir o menu.

Isso é o que eu tentei até agora:

  1. Dizendo à tarefa para executar o aplicativo diretamente.
  2. Dizendo à tarefa para executar um script em lote que execute o aplicativo.
  3. Dizendo à tarefa para abrir cmd.exe com / C "applocation \ appname auto" como argumento.
  4. Alterando a propriedade da tarefa para a conta de usuário criada especificamente para executar tarefas (observe que essa conta de usuário funciona bem para executar outras tarefas).
  5. Explicitamente dando a essa conta de usuário controle total sobre os diretórios envolvidos.
  6. Alterando a propriedade dos diretórios envolvidos para o mesmo usuário.
  7. Alterar as permissões de segurança no aplicativo para sempre Executar como administrador.
  8. Olhando para a minha tela e balançando a cabeça em frustração.

Eu ainda sou bastante verde com a administração do servidor, então é possível que eu tenha esquecido algo, mas eu não sei o que é isso se eu fizesse isso. Eu encontrei uma pergunta aqui que parecia estar relacionada (GUI não carrega para uma tarefa agendada), mas é um pouco diferente, porque pelo menos aquele realmente executou parte da tarefa.

ATUALIZAÇÃO:

Depois de mais algumas descobertas, descobri que o aplicativo tem sido executado, mas devido a algo que eu não sabia sobre o namespace de configurações padrão no .NET, o local na configuração O arquivo em que o aplicativo armazena / lê as credenciais de serviço da Web varia com base no fato de você estar ou não executando o aplicativo ou o aplicativo está sendo executado por meio do TS. Ainda tentando descobrir uma maneira de contornar isso ...

Independentemente disso, este é o lugar onde estou agora: o aplicativo exibe erros de SSL / TLS sempre que o agendador de tarefas tenta executar o aplicativo. Eu tenho um certificado armazenado em um subdiretório do diretório base do aplicativo (E: \ Appname) e, como foi o caso com as credenciais, a execução do aplicativo manualmente não causa problemas com a conexão. Eu assegurei que o certificado e sua pasta tenham o proprietário da tarefa listado com controle total.

Estou sentindo falta de mais alguma coisa aqui?

    
por Ant 30.01.2013 / 17:43

2 respostas

0

Acontece que o problema era que o arquivo de configuração era armazenado no diretório AppData \ Local para o usuário que estava executando o aplicativo quando as configurações foram alteradas (um recurso que eu coloquei no programa ao executá-lo). sem o "auto" arg). Como eu estava fazendo logon para fazer a configuração e não o usuário para o qual a tarefa foi atribuída, não havia arquivo user.config para o usuário da tarefa, daí a falta de dados de configuração utilizáveis. Alinhar o usuário da tarefa e a presença do arquivo user.config corrigiu-o.

    
por 13.03.2013 / 14:25
1

Se você estiver tentando depurar uma tarefa com falha que está sendo executada no contexto de segurança SYSTEM (que é o padrão para uma tarefa agendada), pegue um cópia do psexec.exe e execute psexec -s cmd.exe . Isso vai te dar uma sessão cmd interativa como SYSTEM. Você pode verificar isso executando whoami deste novo prompt de comando.

Tente executar seu aplicativo aqui. Você poderá ver qualquer saída que possa estar gravando no console. Como esse é um aplicativo personalizado, acho que você terá dificuldade em encontrar uma resposta definitiva, pois não sabemos o que seu código está realmente fazendo. Obter uma sessão interativa como SYSTEM pelo menos mostrará se é um problema de permissão ou um problema com as configurações que você está usando no Agendador de Tarefas.

    
por 05.02.2013 / 00:23