As tarefas agendadas do Windows Server 2012 são executadas usando o perfil padrão (quando a execução da sessão é menor), mesmo se uma conta específica for especificada

6

Como apontado em link (Nenhuma resposta da microsoft ainda)

Estou tendo o mesmo problema. Uma tarefa agendada que usamos para executar perfeitamente no windows server 2008R2, não é executada no windows server 2012. O executável dessa tarefa depende das pastas do ambiente do usuário.

Mesmo que a tarefa tenha uma conta de usuário especificada, quando executada sem estar conectada ao servidor, ela é executada no perfil padrão, portanto as pastas do ambiente de usuário não são as corretas e o executável falha.

Alguém sabe como consertar isso?

    
por Alfz 20.09.2013 / 12:22

3 respostas

6

Eu relatei esse bug para a Microsoft no ano passado, através de nossa empresa de suporte de terceiros. Eles reconheceram isso como um bug, mas se recusaram a consertar sem um alto impacto nos negócios - eu estava hackeando algo em desenvolvimento na época.

Na minha pesquisa, descobri que o perfil correto será usado se você tiver uma sessão interativa em execução como o usuário em que sua tarefa agendada está configurada para ser executada. A Microsoft sugeriu uma solução alternativa para executar o calc.exe (ou algum outro processo) antes da tarefa agendada que você deseja executar. Isso parece funcionar no meu caso.

Eu acertei o bug novamente com um novo desenvolvimento, então pedi à nossa empresa de suporte que aumentasse o bug com a Microsoft novamente e referenciei este post para mostrar que outras pessoas estão atingindo o problema.

    
por 07.04.2014 / 09:51
4

Você pode iniciar outra tarefa interativa um ou dois minutos antes da tarefa, o que dará ao Windows tempo para carregar o perfil correto ou iniciar a tarefa por meio de um arquivo em lotes.

set "USERPROFILE=%USERPROFILE%\..\%USERNAME%"
set "APPDATA=%USERPROFILE%\AppData\Roaming"
set "LOCALAPPDATA=%USERPROFILE%\AppData\Local"
"%~dp0\YOUREXEHERE.exe"

Copie isso em um arquivo de lote e coloque-o no mesmo diretório do exe que você deseja executar. Em seguida, altere o YOUREXEHERE para o nome do EXE. Não mude mais nada no script e salve.

Em seguida, execute o lote como sua tarefa agendada em vez do EXE. Qualquer que seja o usuário que execute a tarefa, o aplicativo usará seu perfil.

    
por 30.10.2014 / 14:46
0

Uma correção parece estar disponível aqui: link

No entanto, como preciso agendar uma reinicialização do servidor para aplicar esse hotfix, usei a solução fornecida acima por @ brian-d, e isso funcionou para mim.

    
por 01.06.2016 / 19:27