x86 env değişkeni program dosyalarını nasıl elde edebilirim?


108

Komut isteminde Program Dosyalarının (x86) konumunu nasıl görüntüleyebileceğimi bilmek istiyorum. Windows 7 64bit kullanıyorum.

Denedim:

echo %programfiles(x86)%ve echo %programfiles%,
her ikisi de görüntüler sadeceC:\Program Files

Ben elle kayıt işaretlendiğinde,
HKLM / Yazılım / microsoft / windows / CurrentVersion , işaret ve
programfilesdirC:\Program Files

HKLM / Yazılım / WOW64'ni / Microsoft / Winodws / CurrentVersion , işaret .
programfilesdirC:\Program Files (x86)

Ama neden her zaman C: \ Program Files ile görüntüleniyorum?


10
Bence asıl soru, her ikisinde de yüklü olan programları çalıştırmayı basitleştirmek için hem Windows 7'de hem de Windows xp'de her zaman x86'ya işaret eden bir% programfiles% sürümü neden yok? Örneğin, Windows için Hata Ayıklama Araçlarını (x86) XP'ye yükledikten sonra Program Dosyaları'nda bulunur, ancak Windows 7'de Program Dosyaları'nda (x86) bulunur, bu da tüm bilgisayarlara dağıtılabilen bir komut dosyası oluşturmanın basit bir yolu olmadığı anlamına gelir. Yerleşik ortam değişkenlerinin hiçbiri sürekli olarak Program Dosyaları için 32 bit konumu göstermediğinden.
dj69

[tüm cevabı okuduktan sonra yayınlanmıştır] IMHO, bu tartışmada eksik olan bir nokta, hangi değişkeni kullanırsanız kullanın, her zaman uygun klasörü göstermenin garantili olmasıdır. Bu, Windows'un C: \ dışındaki bir sürücüye kurulduğu nadir durumlarda kritik hale gelir.
Amir Katz

Yanıtlar:


179

64 bit modunda çalışan 64 bitlik bir makinede:

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

32 bit (WOW64) modunda çalışan 64 bitlik bir makinede:

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

32 bit modunda çalışan 32 bitlik bir makinede:

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

18
% Hangi% programfiles (x86)% 32-bit makinede 32-bit modunda dönecek?
Ivan Kochurkin

Windows XP (x86) çalışmazsa,% programfiles% koymanız gerekir. Bence tek yol, önce işletim sistemi sürümünü kodla kontrol etmek ve ardından bir değişken veya diğerini kullanmaktır.
gsubiran

3
Yukarıdaki listeye% ProgramW6432% eklemeye değer olabilir.
Alex Wiese

2
Aynısı Windows 7'nin 32 bit sürümü için de geçerlidir -% programfiles (x86)% çevre değişkeni yoktur
badsamaritan

1
İkinci olarak @Alex Wiese,% ProgramW6432% her zaman 64-bit program dosyaları dizinine sahip olacaktır. % ProgramFiles (x86)%, her zaman 32 bit program dosyaları dizinine sahip olacaktır. Bu iki değişken kararlıdır ... diğerleri 64 bit işletim sisteminin (veya komut isteminin) hangi modda çalıştığına bağlı olarak değişebilir.
Jason

36

Diğer bir ilgili ortam değişkeni şudur:

% ProgramW6432%

Dolayısıyla, 32 bit (WOW64) modunda çalışan 64 bitlik bir makinede:

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

Gönderen Vikipedi :

% ProgramFiles% değişkeni, tüm yüklü Windows programlarını ve diğerlerini depolayan Program Dosyaları dizinine işaret eder. İngilizce dil sistemlerinde varsayılan "C: \ Program Files" dır. Windows'un 64 bit sürümlerinde (XP, 2003, Vista), varsayılan olarak "C: \ Program Files (x86)" olan% ProgramFiles (x86)% ve varsayılan olarak "C:" olan% ProgramW6432% de vardır: \Program dosyaları". % ProgramFiles% değerinin kendisi, ortam değişkenini isteyen işlemin kendisinin 32 bit mi yoksa 64 bit mi olduğuna bağlıdır (bu, Windows üzerinde Windows 64 bit yeniden yönlendirmesinden kaynaklanır).

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


3
Daha iyi başvuru: MSDN: WOW64 Uygulama Ayrıntıları - "ProgramW6432 ve CommonProgramW6432 ortam değişkenleri, Windows 7 ve Windows Server 2008 R2'den başlayarak eklendi." Wikipedia bununla doğrudan çelişiyor; ilginci, Vikipedi sadece üç sürümleri listelenmektedir yok MSDN göre bu değişkeni desteklemektedir. Maalesef test edilecek 64 bit XP / Vista'ya sahip değilim.
Lexikos

1
İkinci okumada, Windows 7/2008 R2 gereksiniminin yalnızca 64 bit işlemler için geçerli olduğunu görüyorum. Değişken yalnızca Vista x64'te 32 bit işlemler için tanımlanır.
Lexikos


0

IMHO, bu tartışmada eksik olan bir nokta, hangi değişkeni kullanırsanız kullanın, her zaman uygun klasörü göstermenin garantili olmasıdır. Bu, Windows'un C: \ dışındaki bir sürücüye kurulduğu nadir durumlarda kritik hale gelir.


1
Bu iyi bir not. Ancak soruyu doğrudan cevaplamadığı için, sorunun kendisine bir yorum olarak yazması daha iyi olurdu.
AbstractVoid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.