bagaimana cara mendapatkan file program variabel env x86?

108

Saya ingin tahu bagaimana saya dapat menampilkan lokasi Program Files (x86) di command prompt. Saya menggunakan Windows 7 64bit.

Saya sudah mencoba:

echo %programfiles(x86)%dan echo %programfiles%,
keduanya hanya menampilkanC:\Program Files

Ketika saya secara manual memeriksa registri,
HKLM / Software / microsoft / windows / CurrentVersion ,
yang programfilesdirpoin untuk C:\Program Filesdan

HKLM / Software / WOW64 / Microsoft / winodws / CurrentVersion ,
yang programfilesdirpoin ke C:\Program Files (x86).

Tapi, kenapa saya selalu ditampilkan dengan C: \ Program Files ??

Ashok
sumber
10
Saya pikir pertanyaan sebenarnya adalah, mengapa tidak ada versi% programfiles% yang selalu menunjuk ke x86 di windows 7 dan windows xp untuk menyederhanakan menjalankan program yang diinstal pada keduanya? Misalnya, setelah menginstal Alat Debugging untuk Windows (x86) di XP, itu ditemukan di Program Files tetapi di Windows 7 itu ditemukan di Program Files (x86) yang berarti tidak ada cara sederhana untuk membuat file perintah yang dapat didistribusikan ke semua komputer karena tidak ada variabel lingkungan built-in yang secara konsisten mengarah ke lokasi 32-bit untuk Program Files.
dj69
[diposting setelah membaca semua jawaban] IMHO, satu poin yang hilang dalam pembahasan ini adalah bahwa variabel apa pun yang Anda gunakan, dijamin selalu mengarah ke folder yang sesuai. Ini menjadi penting dalam kasus yang jarang terjadi di mana Windows diinstal pada drive selain C: \.
Amir Katz

Jawaban:

179

Di mesin 64-bit yang berjalan dalam mode 64-bit:

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

Di mesin 64-bit yang berjalan dalam mode 32-bit (WOW64):

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

Di mesin 32-bit yang berjalan dalam mode 32-bit:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> %programfiles(x86)%
SecurityMatt
sumber
18
Apa% programfiles (x86)% yang akan dikembalikan pada mesin 32-bit dalam mode 32-bit?
Ivan Kochurkin
Pada windows XP (x86) tidak berfungsi, Anda perlu meletakkan% programfiles%. Saya pikir satu-satunya cara adalah memeriksa dengan kode versi OS terlebih dahulu dan kemudian menggunakan satu variabel atau lainnya.
gsubiran
3
Mungkin ada baiknya menambahkan% ProgramW6432% ke daftar di atas.
Alex Wiese
2
Hal yang sama berlaku untuk versi 32-bit Windows 7 - tidak ada variabel lingkungan%
programfiles
1
Saya kedua @Alex Wiese,% ProgramW6432% akan selalu memiliki direktori file program 64-bit. % ProgramFiles (x86)% akan selalu memiliki direktori file program 32-bit. Kedua variabel tersebut stabil ... yang lain dapat berubah tergantung pada mode apa OS 64-bit (atau command prompt) berjalan masuk
Jason
36

Variabel lingkungan lain yang relevan adalah:

% ProgramW6432%

Jadi, pada mesin 64-bit yang berjalan dalam mode 32-bit (WOW64):

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

Dari Wikipedia :

Variabel% ProgramFiles% menunjuk ke direktori Program Files, yang menyimpan semua program Windows yang terinstal dan lainnya. Default pada sistem berbahasa Inggris adalah "C: \ Program Files". Dalam edisi 64-bit Windows (XP, 2003, Vista), ada juga% ProgramFiles (x86)%, yang defaultnya adalah "C: \ Program Files (x86)", dan% ProgramW6432%, yang defaultnya adalah "C: \File program". % ProgramFiles% itu sendiri bergantung pada apakah proses yang meminta variabel lingkungan itu sendiri 32-bit atau 64-bit (ini disebabkan oleh pengalihan 64-bit Windows-on-Windows).

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

viniciussss
sumber
3
Referensi yang lebih baik: MSDN: Detail Implementasi WOW64 - "Variabel lingkungan ProgramW6432 dan CommonProgramW6432 ditambahkan mulai dengan Windows 7 dan Windows Server 2008 R2." Wikipedia secara langsung membantahnya; Menariknya, Wikipedia hanya mencantumkan tiga versi yang tidak mendukung variabel ini menurut MSDN. Sayangnya saya tidak memiliki 64-bit XP / Vista untuk diuji.
Lexikos
1
Pada pembacaan kedua, saya melihat bahwa persyaratan Windows 7/2008 R2 hanya berlaku untuk proses 64-bit. Variabel ditentukan hanya untuk proses 32-bit di Vista x64.
Lexikos
4

Pada mesin Windows 64 bit, echo% programfiles (x86)% tidak mencetak C: \ Program Files (x86)

Sriranga Chidambara
sumber
0

IMHO, satu hal yang kurang dalam pembahasan kali ini adalah variabel apa pun yang Anda gunakan, dijamin selalu mengarah ke folder yang sesuai. Ini menjadi penting dalam kasus yang jarang terjadi di mana Windows diinstal pada drive selain C: \

Amir Katz
sumber
1
Ini adalah catatan yang bagus. Tetapi karena tidak menjawab pertanyaan secara langsung, akan lebih baik jika ditulis sebagai komentar untuk pertanyaan itu sendiri.
AbstractVoid