Como defino a variável de ambiente TEMP para o usuário “Serviço de Rede”?

6

Temos um sistema que usa as chamadas Path.GetTempFile e Path.GetTempPath para trabalhar com arquivos temporários com bastante frequência. Este sistema também é executado como o usuário "Serviço de Rede". Estamos descobrindo que estamos ficando sem espaço na unidade C (para outros problemas, nossos arquivos temporários são limpos corretamente) e gostaríamos de poder mover o diretório temporário para uma unidade diferente.

A solução mais fácil para isso parece ser alterar as variáveis de ambiente TMP ou TEMP para o usuário do Serviço de Rede, mas parece que apenas consigo definir meu próprio usuário ou as variáveis de "sistema" que são substituídas pelo Serviço de Rede. perfil de usuário. Como faço para definir essas variáveis para o usuário do Serviço de Rede?

    
por Chris Phillips 06.06.2012 / 17:55

2 respostas

2

É realmente muito difícil. Você pode usar o comando setx para definir variáveis de ambiente persistentes para outros usuários, mas isso não funcionará para NetworkService, porque as contas de serviço não têm senhas (portanto, suas credenciais sempre serão rejeitadas).

A única maneira que eu conheço para fazer isso é usando o agendador de tarefas:

  1. Configure uma tarefa para ser executada como o "serviço de rede" do usuário.
  2. Deixe os acionadores vazios.
  3. Para a ação, execute cmd.exe com os parâmetros /c setx temp [target] .
  4. Execute a tarefa manualmente.
  5. Excluir a tarefa.

Isso funcionará para definir uma variável de ambiente persistente para o usuário NetworkService. Quanto a saber se isso funcionará com êxito para realocar os arquivos temporários desse usuário ou se causará efeitos colaterais imprevisíveis, não posso dizer com certeza. Talvez seja necessário reinicializar para verificar se ele está colocando os arquivos temporários onde você deseja.

Você pode verificar se a variável de ambiente foi alterada para o usuário correto usando o comando environment no WMIC.

    
por 20.07.2012 / 09:25
3

As variáveis de ambiente para a conta Network Service são armazenadas no Registro do Windows e podem ser modificadas pelo regedit: HKEY_USERS\S-1-5-20\Environment .

    
por 11.11.2014 / 11:51