Tudo o que Twisty Impersonator disse em sua resposta está correta. A ideia de que a variável de caminho do usuário é acrescentada foi destacada e acredito que as conseqüências dessa diferença requerem algum tratamento adicional.
Path = %Path% (System) ; %Path% (User)
Quando você executa um programa executável (ou qualquer script executável, como .bat
, .vbs
, etc.), não é necessário fornecer o caminho completo.
Por exemplo, para executar java
, você pode digitar qualquer um destes:
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
O primeiro exemplo usa um caminho totalmente qualificado. Isso sempre usará a versão do Java nesse exato caminho.
O segundo exemplo passará por cada um dos diretórios na variável de ambiente %Path%
, procurando por um arquivo executável chamado java.exe
. Ele executará o primeiro que for encontrado e interromperá a pesquisa. Se houver dois arquivos chamados java.exe
em algum lugar no %Path%
, somente o primeiro encontrado será usado.
O terceiro exemplo, como o segundo, itera os diretórios listados no %Path%
. Além disso, como uma extensão de arquivo não foi fornecida, uma lista de extensões de arquivo executável é anexada ao nome do arquivo, na ordem especificada na variável de ambiente %PATHEXT%
. Se houver vários arquivos chamados java.com
, java.exe
, java.bat
, etc. em algum lugar no %Path%
, somente o primeiro encontrado será usado.
Você pode ver a lista de extensões de caminhos executáveis em seu sistema criando o seguinte arquivo em lotes:
@echo off
echo %PATHEXT%
pause
Na minha máquina, estas são:
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY
O que tudo isso significa?
Em strong contraste para outra variável de ambiente, o caminho do usuário não permite que você substitua o caminho do sistema. O exato oposto é o caso. Nos exemplos acima, há muitos casos em que você pode alterar a versão padrão do Java. No entanto, se já houver uma versão do Java listada no caminho do sistema, essa será a versão que SEMPRE será encontrada primeiro, porque o caminho é pesquisado em ordem, da esquerda para a direita, e o caminho do usuário é anexado à direita lado direito, com o caminho do sistema à esquerda.
O que posso fazer sobre isso?
Se você não tiver acesso às variáveis de ambiente do sistema, não poderá substituir os programas padrão no caminho do sistema usando o caminho do usuário. (Na verdade, deve ser desse modo, ou certos programas parariam de funcionar corretamente e abriria o sistema para adulteração por software malicioso. Ninguém quer isso.)
Em vez disso, você deve usar um caminho completo se precisar usar uma versão específica.