Por que minha variável de ambiente PATH é diferente do prompt de comando?

10

Um pouco de histórico importante: minha empresa possui um script VBS de login genérico que faz modificações na variável de ambiente PATH do usuário no login e permite que eu execute softwares que tenham dependências em compartilhamentos de arquivos DFS mapeados. Também instalei recentemente o Windows PowerShell SDK em minha máquina com Windows 7 Enterprise e tentei modificar minha variável de ambiente PATH na linha de comando do Powershell.

Depois disso, notei que não podia mais executar aplicativos que correspondessem a essas modificações de PATH de login e que o PATH do editor de variáveis de ambiente estava definido como algo diferente do que estava sendo exibido quando emiti um 'echo %PATH%' do prompt de comando .

Então, por exemplo (simplificação), do editor de variável de ambiente ( My Computer properties -> Advanced System Settings -> Environment Variables ) eu tive

 C:\MyDir\; C:\MyOtherDir

considerando que quando eu fiz 'echo %PATH%' em um prompt de comando, obtive:

 C:\MyDir\

Alguém mais teve um problema semelhante e houve algum tipo de resolução? Quando pesquisei por ajuda, me deparei com isso:

(relacionado?) StackOverflow Tópico

Ocorreu-me que, se o script de login foi iniciado por algo diferente do meu ambiente Explorer.exe, esse era o problema. No entanto, quando eu executei o script de login, meu PATH do prompt de comando não foi alterado. O que isso teria a ver com o PowerShell? Eu estou perdendo como isso está conectado a essa instalação completamente.

    
por PatternMatching 29.07.2013 / 22:26

1 resposta

11

O Windows possui duas classes de variáveis de ambiente variáveis de ambiente do sistema e variáveis de ambiente do usuário . Se você estiver usando echo %PATH% , verá sua variável de ambiente do usuário PATH . Somente se não houver uma variável de usuário definida, a variável do sistema estará em vigor para os processos do usuário.

O PATH separador ; não deve ser seguido por um espaço em branco.

A seguinte nota da Microsoft pode ser útil:

Você pode modificar variáveis de ambiente do usuário editando a seguinte chave do Registro:

   HKEY_CURRENT_USER \ 
         Environment

Você pode modificar variáveis de ambiente do sistema editando a seguinte chave do Registro:

   HKEY_LOCAL_MACHINE \ 
               SYSTEM \ 
    CurrentControlSet \ 
              Control \ 
      Session Manager \ 
          Environment

Observe que qualquer variável de ambiente que precise ser expandida (por exemplo, quando você usa %SYSTEM% ) deve ser armazenada no Registro como um valor de registro REG_EXPAND_SZ . Quaisquer valores do tipo REG_SZ não serão expandidos quando lidos no registro.

Observação adicional: Sempre que um processo altera seu ambiente (em vez das configurações do registro que definem o ambiente para novos processos), as alterações são visíveis apenas para processos filhos.

    
por 30.07.2013 / 09:25