Por que as mudanças no meu PATH não estão sendo reconhecidas?

32

Quando atualizo meu PATH usando a caixa de diálogo Variáveis de ambiente interna, ou algo como Path Editor e, em seguida, abrir um prompt de comando, as alterações no meu PATH não serão registradas no console, dependendo de onde o prompt de comando foi iniciado.

Por exemplo, se eu editar meu PATH e, em seguida, iniciar cmd.exe a partir do Menu Iniciar ou um atalho na área de trabalho, meu PATH parecerá correto: ele foi atualizado com êxito; no entanto, se eu iniciar o cmd.exe a partir de um atalho em qualquer lugar outro que o Menu Iniciar ou Área de Trabalho, o novo PATH não será lido e eu obtenho o caminho antigo. É muito estranho.

Eu tentei executar o prompt de comando de um atalho na área de trabalho e funciona bem; Eu então copio esse exatamente o mesmo atalho para uma subpasta na área de trabalho, e recebo o problema PATH não atualizável.

Sei que isso é difícil de explicar, então criei um screencast para mostrar esse problema em ação .

Aqui está uma captura de tela do atalho do Prompt de Comando, conforme visto no screencast:

Isso está no Windows Vista Home Premium SP2.

    
por Charles Roper 11.02.2010 / 13:45

2 respostas

23

Como Rowland sugere, ao iniciar um novo processo, ele lerá as variáveis de ambiente do processo que está iniciando. Portanto, ao iniciar um prompt de comando a partir do Menu Iniciar ou do Desktop , ele lê as variáveis de ambiente de explorer.exe que, como sugere o grawity, detecta alterações nas configurações do ambiente no registro e, assim, vejo meu novo PATH em prompts de comando iniciado a partir da área de trabalho ou do menu Iniciar.

A razão pela qual eu não vejo as atualizações no meu PATH no screencast que eu postei é porque eu tinha inicialmente lançado uma janela do Explorer usando FARR tornando FindAndRunRobot.exe o processo pai. O FARR não detecta automaticamente mudanças de ambiente e, portanto, os processos-filhos gerados a partir dele não selecionam o novo PATH. Eu também tive ' Ativar janelas de pastas em um processo separado ' conjunto de opções no Explorer, o que significa que todas as janelas explorer.exe que abri subseqüentes ao inicial aberto pelo FARR, onde também os filhos de FARR .

Ao desativar a opção ' Ativar janelas de pastas em um processo separado ', novos explorer.exe processos não são criados sob o FARR, o que resolve o meu problema. No entanto, eu também inicio as janelas do console e outras coisas diretamente do FARR; estes também obtêm as configurações antigas do ambiente. Se eu reiniciar o FARR, as novas configurações de ambiente serão propagadas.

Aqui está uma captura de tela do Process Explorer mostrando os processos gerados pelo FARR. Nenhum desses processos recebe as novas configurações de ambiente do nível superior explorer.exe , a menos que eu reinicie o FARR:

    
por 11.02.2010 / 15:30
26

Quando você inicia um novo processo (como uma nova linha de comando), ele selecionará as variáveis de ambiente do processo que está iniciando. Quando o caminho é atualizado, apenas o processo que executa a atualização pode saber que ele foi alterado e a configuração não se propaga até que você efetue logon novamente (para configurações por usuário) ou reinicialize (para configurações de todo o sistema)

    
por 11.02.2010 / 14:13