come ottenere i file di programma x86 variabile env?


108

Vorrei sapere come visualizzare la posizione dei file di programma (x86) nel prompt dei comandi. Sto usando Windows 7 a 64 bit.

Ho provato:

echo %programfiles(x86)%e echo %programfiles%,
entrambi vengono visualizzati soloC:\Program Files

Quando ho controllato manualmente il registro,
HKLM / Software / microsoft / windows / currentversion ,
i programfilesdirpunti a C:\Program Filese

HKLM / Software / WOW64 / Microsoft / winodws / currentversion ,
i programfilesdirpunti a C:\Program Files (x86).

Ma perché vengo sempre visualizzato con C: \ Programmi ??


10
Penso che la vera domanda sia, perché non esiste una versione di% programfiles% che punta sempre a x86 sia su Windows 7 che su Windows XP per semplificare i programmi in esecuzione installati su entrambi? Ad esempio, dopo aver installato Debugging Tools for Windows (x86) su XP, si trova in Program Files ma su Windows 7 si trova su Program Files (x86), il che significa che non esiste un modo semplice per creare un file di comando che possa essere distribuito su tutti i computer poiché nessuna delle variabili di ambiente incorporate punta costantemente alla posizione a 32 bit per i file di programma.
dj69

[pubblicato dopo aver letto tutte le risposte] IMHO, un punto che manca in questa discussione è che qualunque variabile tu usi, è garantito che punti sempre alla cartella appropriata. Ciò diventa critico nei rari casi in cui Windows è installato su un'unità diversa da C: \.
Amir Katz

Risposte:


179

Su una macchina a 64 bit in esecuzione in modalità 64 bit:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

Su una macchina a 64 bit in esecuzione in modalità a 32 bit (WOW64):

  • echo %programfiles% ==> C:\Program Files (x86)
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

Su una macchina a 32 bit in esecuzione in modalità a 32 bit:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> %programfiles(x86)%

18
Quale% programfiles (x86)% restituirà su una macchina a 32 bit in modalità 32 bit?
Ivan Kochurkin

Su Windows XP (x86) non funziona, è necessario inserire% programfiles%. Penso che l'unico modo sia controllare prima tramite codice la versione del sistema operativo e poi utilizzare una variabile o un'altra.
gsubiran

3
Potrebbe valere la pena aggiungere% ProgramW6432% all'elenco sopra.
Alex Wiese

2
Lo stesso vale per la versione a 32 bit di Windows 7 - non esiste una variabile ambientale% programfiles (x86)%
badsamaritan

1
Secondo @Alex Wiese,% ProgramW6432% avrà sempre la directory dei file di programma a 64 bit. % ProgramFiles (x86)% avrà sempre la directory dei file di programma a 32 bit. Queste due variabili sono stabili ... le altre possono cambiare a seconda della modalità in cui è in esecuzione il sistema operativo a 64 bit (o prompt dei comandi).
Jason

36

Un'altra variabile d'ambiente rilevante è:

% ProgramW6432%

Quindi, su una macchina a 64 bit in esecuzione in modalità a 32 bit (WOW64):

  • echo% programfiles% ==> C: \ Programmi (x86)
  • echo% programfiles (x86)% ==> C: \ Programmi (x86)
  • echo% ProgramW6432% ==> C: \ Programmi

Da Wikipedia :

La variabile% ProgramFiles% punta alla directory Programmi, che memorizza tutti i programmi installati di Windows e altri. L'impostazione predefinita sui sistemi in lingua inglese è "C: \ Programmi". Nelle edizioni a 64 bit di Windows (XP, 2003, Vista), sono presenti anche% ProgramFiles (x86)%, che per impostazione predefinita è "C: \ Program Files (x86)", e% ProgramW6432%, che per impostazione predefinita è "C: \File di programma". Il% ProgramFiles% stesso dipende dal fatto che il processo che richiede la variabile di ambiente sia esso stesso a 32 o 64 bit (questo è causato dal reindirizzamento a 64 bit di Windows su Windows).

Riferimento: http://en.wikipedia.org/wiki/Environment_variable


3
Migliore riferimento: MSDN: dettagli sull'implementazione di WOW64 - "Le variabili di ambiente ProgramW6432 e CommonProgramW6432 sono state aggiunte a partire da Windows 7 e Windows Server 2008 R2." Wikipedia contraddice direttamente questo; È interessante notare che Wikipedia elenca solo le tre versioni che non supportano questa variabile secondo MSDN. Sfortunatamente non ho XP / Vista a 64 bit da testare.
Lexikos

1
Alla seconda lettura, vedo che il requisito di Windows 7/2008 R2 si applica solo ai processi a 64 bit. La variabile è definita solo per processi a 32 bit su Vista x64.
Lexikos


0

IMHO, un punto che manca in questa discussione è che qualunque variabile tu usi, è garantito che punti sempre alla cartella appropriata. Ciò diventa fondamentale nei rari casi in cui Windows è installato su un'unità diversa da C: \


1
Questa è una buona nota. Ma poiché non risponde direttamente alla domanda, sarebbe stato meglio scriverlo come commento alla domanda stessa.
AbstractVoid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.