Tudo o que o Twisty Impersonator disse em sua resposta está correto. A ideia de que a variável de caminho do usuário está anexada foi destacada e acredito que as consequências dessa diferença requerem algum tratamento adicional.
Caminho =% Caminho% (Sistema); % Path% (Usuário)
Quando você executar um programa executável (ou qualquer script executável, como .bat
, .vbs
, etc.) você não precisa fornecer o caminho totalmente qualificado.
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 completo. Isso sempre usará a versão do Java nesse caminho exato.
O segundo exemplo examinará cada um dos diretórios da %Path%
variável de ambiente, procurando um arquivo executável chamado java.exe
. Ele executará o primeiro encontrado e interromperá a pesquisa. Se houver dois arquivos nomeados java.exe
em algum lugar no %Path%
, apenas o primeiro encontrado será usado.
O terceiro exemplo, como o segundo, irá percorrer os diretórios listados em %Path%
. Além disso, como uma extensão de arquivo não foi fornecida, uma lista de extensões de arquivo executáveis é anexada ao nome do arquivo, na ordem especificada na %PATHEXT%
variável de ambiente. Se houver vários arquivos nomeados java.com
, java.exe
, java.bat
, etc. em algum lugar no %Path%
, apenas o primeiro encontrado é usado.
Você pode ver a lista de extensões de caminho executável em seu sistema, criando o seguinte arquivo em lotes:
@echo off
echo %PATHEXT%
pause
Na minha máquina, são eles:
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PY
O que tudo isso significa?
Dentro forte contraste com outras variáveis de ambiente, o caminho do usuário não permite substituir o caminho do sistema. O oposto exato é o caso. Dos exemplos acima, existem muitos casos em que você pode alterar a versão padrão do Java. No entanto, se já existe uma versão Java listada no caminho do sistema, essa é a versão que SEMPRE será encontrada primeiro, porque o caminho é pesquisado na ordem, da esquerda para a direita, e o caminho do usuário é anexado à direita lado esquerdo, 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. (De fato, deve ser assim, ou certos programas parariam de funcionar corretamente e abririam seu sistema a adulteração de software malicioso. Ninguém quer isso.)
Em vez disso, você deve usar um caminho completo se precisar usar uma versão específica.