Tutto ciò che Twisty Impersonator ha detto nella loro risposta è corretto. L'idea che la variabile del percorso dell'utente sia stata aggiunta è stata evidenziata e credo che le conseguenze di tale differenza richiedano un trattamento aggiuntivo.
Path =% Path% (Sistema); % Percorso% (utente)
Quando si esegue un programma eseguibile (o qualsiasi script eseguibile, come ad esempio .bat
, .vbs
e così via) non è necessario fornire il percorso completo.
Ad esempio, per eseguire java
, è possibile digitare uno di questi:
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
Il primo esempio utilizza un percorso completo. Questo utilizzerà sempre la versione di Java in quel percorso esatto.
Il secondo esempio esaminerà ciascuna delle directory nella %Path%
variabile d'ambiente, alla ricerca di un file eseguibile chiamato java.exe
. Eseguirà il primo trovato e interromperà la ricerca. Se ci sono due file chiamati java.exe
da qualche parte sul %Path%
, viene utilizzato solo il primo trovato.
Il terzo esempio, come il secondo, ripeterà le directory elencate in %Path%
. Inoltre, poiché non è stata fornita un'estensione di file, un elenco di estensioni di file eseguibili viene aggiunto al nome del file, nell'ordine specificato nella %PATHEXT%
variabile di ambiente. Se ci sono più file denominati java.com
, java.exe
, java.bat
, ecc da qualche parte sulla %Path%
, viene utilizzato solo il primo trovato.
È possibile visualizzare l'elenco delle estensioni di percorso eseguibili sul proprio sistema creando il seguente file batch:
@echo off
echo %PATHEXT%
pause
Sulla mia macchina, questi sono:
.COM; .EXE; BAT; cmd; .VBS; .vbe; .JS; .JSE; .wsf; .WSH; MSC; .PY
Cosa significa tutto questo?
In netto contrasto con altre variabili d'ambiente, il percorso dell'utente non consente di sovrascrivere il percorso del sistema. È esattamente il contrario. Dagli esempi sopra, ci sono molti casi in cui potresti cambiare la versione predefinita di Java. Tuttavia, se esiste già una versione Java elencata nel percorso di sistema, questa è la versione che verrà SEMPRE trovata per prima, perché il percorso viene cercato in ordine, da sinistra a destra, e il percorso dell'utente viene aggiunto a destra lato mano, con il percorso del sistema a sinistra.
Cosa posso fare al riguardo?
Se non si ha accesso alle variabili di ambiente di sistema, non è possibile ignorare i programmi predefiniti sul percorso di sistema utilizzando il percorso utente. (In effetti, deve essere così, o alcuni programmi smetterebbero di funzionare correttamente e aprirebbe il tuo sistema a manomissioni da software dannoso. Nessuno lo vuole.)
Invece, è necessario utilizzare un percorso completo se è necessario utilizzare una versione specifica.