A variável de ambiente TEMP ocasionalmente altera seu valor

1

Eu tenho o Windows 7 Pro x64.

Durante as últimas uma ou duas semanas, às vezes acontece comigo que vários aplicativos não podem gravar no diretório temporário. Descobri que isso ocorre porque a variável de ambiente TEMP é definida como o valor do sistema ( C:\Windows\TEMPgeralmente, eu a defini de maneira diferente) e não para o valor do usuário ( B:\Users\%USERNAME%\Tempno meu caso). Além disso, o explorer.exeprocesso TEMP definido incorretamente, quando esse problema ocorre.

Originalmente, pensei que o valor TEMP incorreto é definido durante o winlogon, mas acontece que nem sempre é esse o caso. Também é importante dizer que isso acontece com vários perfis de usuário no mesmo computador, não apenas com meu próprio perfil.

Ontem, quando isso aconteceu novamente, reiniciei o computador, efetuei login e verifiquei se o explorer.exeprocesso tem essa variável TEMP definida corretamente. Então iniciei vários outros aplicativos, todos com TEMP definido corretamente também. Mas hoje, depois de acordar o notebook do modo de suspensão, o explorer.exevalor TEMP está incorreto novamente e, portanto, todos os outros aplicativos recém-iniciados o herdam! Evidentemente, ainda é o mesmo processo de ontem, como um processo pai para a maioria dos aplicativos, incluindo aqueles que foram iniciados ontem e ainda têm o TEMP definido corretamente! Estou perplexo :-(.

Perguntas: Como pode acontecer algo assim? Por que esse estranho comportamento pode ser causado? Como resolver o problema?

O problema é frustrante, pois sempre tenho que fechar tudo e efetuar logout e login.

Observações:

  • Eu uso o ProcessExplorer para ver como é o ambiente atual dos processos individuais.
  • Não acho que a memória seja corrompida. Como o TEMP seria preenchido com um absurdo, não com o valor TEMP do sistema válido.
  • Há muito espaço nos discos.
  • Também não acho que meu perfil esteja corrompido. Porque o mesmo também tenho avisos com outros perfis, e isso nem sempre acontece.
xarx
fonte
Leia sobre isso para obter uma explicação: environmentvariables.org/Temp talvez ajude a esclarecer algumas. Dependendo do contexto de segurança de algo em execução que usa essa variável, uma ou outra pode ser usada pelo ponteiro correlacionado / variável de ambiente. Portanto, se for executado como, SYSTEMpor exemplo, poderá ser usado, C:\Windows\TEMPenquanto o uso como uma conta de usuário poderá usar o caminho temporário do perfil.
Pimp Juice IT
Obrigado pelo link, mas não vejo nada de útil. Em particular, como é possível que o processo explorer.exe altere seu valor TEMP ao longo do tempo? E como evitar isso?
Xarx
1
Defina um nome de variável diferente que não seja %TEMP%e use-o: SET dTemp=%SYSTEMROOT%\TEMPEm seguida, use %dTemp%o restante do seu script. Solução rápida Suponho que, em termos de como impedir, além de controlar o contexto de segurança do tempo de execução / tempo de execução, o que estiver executando o processo que usa a %TEMP%variável.
Pimp Juice IT
Não sei se entendi. Não estou tendo problemas com um script, mas com o Windows. Os aplicativos no Windows têm problemas ao tentar gravar na pasta TEMP, porque a variável TEMP em seu ambiente está definida no local errado. Não é o meu roteiro (não estou escrevendo nenhum atualmente).
Xarx
Verifique as variáveis ​​do sistema: você provavelmente descobrirá que TEMPestá definido como padrão do sistema nas variáveis ​​do sistema e na sua configuração nas variáveis ​​do usuário ( PC-> Properties-> Advanced System Settings-> Advancedguia -> Environment Variables...botão). Como você está verificando o TEMPvalor do Explorer ? Os processos do sistema (por exemplo, iniciados por um serviço) usarão a TEMPconfiguração do sistema , enquanto os processos do usuário usarão o usuário TEMP.
AFH