Windows 7 neden Program Dosyaları (x86) klasörüne 64 bit uygulamalar yüklüyor? Davranışı değiştirebilir miyim?


12

CTP'den bu yana Windows 7'nin 64 bit sürümünü kullanıyorum ve C:\Program Files (x86)klasöre yüklenen uygulamalarda birkaç sorunla karşılaştım . Zaten 2 ayrı Program Files dizinine sahip olmanın amacı nedir?

Yüklediğim her program C:\Program Files (x86)klasöre girdi . Uygulamanın 32 veya 64 bit olması önemli değil. Neden 64 bit uygulamalar yerleştirilmiyor C:\Program Files?

C:\Program FilesBunun yerine varsayılanı değiştirmenin bir yolu var mı ? Eğer herşeyi koyarsam bir şeyleri karıştırır C:\Program Filesmıydı?

Gerçekten de 64 bit uygulamalar için ayrı bir klasöre sahip olmanın bir yararı varsa, C:\Program Filesx86 uygulamaları için daha mantıklı varsayılanların kullanılması C:\Program Files (x64)ve yeni 64 bit uygulamalar için yeni bir klasör oluşturulması gibi görünüyor . Bu geriye dönük uyumluluğun korunmasına yardımcı olur. Bir yazılım geliştiricisi olarak çalışıyorum ve bazı projelerim altında kütüphanelere yol referansları içeriyor C:\Program Files. Şimdi bu referanslar, onları yerleştiren Windows 7 makinesinde bozuldu C:\Program Files (x86). Hatta yükleyicideki hedef konumu değiştirmeye çalıştım C:\Program Files, ancak bu göz ardı edildi ve uygulama C:\Program Files (x86)yine de gitti .

Bu çok sinir bozucu çünkü 32 ve 64 bit makineler arasında kaynak kodunu paylaşmam gerekiyor ve bu kitaplıkların yolunu farklı makinelerde farklı şekilde ayarlayan bazı yapılandırma dosyasıyla uğraşmak istemiyorum.

Ortam değişkenleri ile ilgili Düzenleme: (. Basitlik için değişkenlerin İngilizce varsayılan değerlere sadece kullanma) 64 bit makinede %ProgramFiles%olacak C:\Program Filesyepyeni değişken iken %ProgramFiles(x86)%olacaktır C:\Program Files (x86). Bu nedenle, altında yükleneceği klasör yolunu bulması gereken 32 bit bir programınız varsa, sırayla Windows'un 32 bit veya 64 bit Windows sürümünde çalışıp çalışmadığını kontrol etmeniz gerekir. hangi ortam değişkeninin kullanılacağını bilmek. 64 bitlik bir makinede düzgün çalışması için bu dikkate alınmadan yazılmış 32 bitlik uygulamaların güncellenmesi gerekir. Böylece ortam değişkenleri kullanılsa bile geriye dönük uyumluluk bozulur.

Ayrıca, %ProgramFiles(x86)%Windows'un 32 bit sürümlerinde yoktur. Eğer öyleyse, 32 bit uygulamalar her zaman bu ortam değişkenini kullanabilir ve hangi işletim sistemi üzerinde çalıştıklarına bağlı olarak herhangi bir koşullu mantığa ihtiyaç duymazdı.


6
Bu uygulamaların gerçekten de 64 bit olduğundan emin misiniz? Çoğu durumda sadece 64 bit uyumlu, ancak aslında 32 bit uygulama olan programlar bulacaksınız.
John T

%ProgramFiles%Ortam değişkenini kullanmanın bunu çözüp çözemeyeceğini merak ediyorum . X86 / 64bit farkını nasıl işlediğinden emin değilim.
ceejayoz

Yanıtlar:


7

Bunun nedeni sadece birçok eski yükleyicinin yeni dosya yapısını anlamıyor ve standart program dosyaları dizinindeki her şeyi plonk yapıyor veya orada kopyalanan birkaç 32 bit bileşen içeren akıllı bir programa bakıyorsunuz.

En iyi seçeneğiniz, x64 Winrar gibi yeni bir program indirmek ve makinenizle ilgili bir sorunu ortadan kaldırmak için nereye yüklendiğini görmek.

Bir şeyleri karıştırmak gelince - olabilir, ama gerçekten programa bağlı, herkese uyan tek bir cevap yok ... sadece birkaç dosya içeren daha küçük, kompakt programların hiçbir problemi olmamalı, nerede, Office hakkında konuşursanız , Adobe veya başka herhangi bir "paket" veya büyük program, büyük olasılıkla çapraz mimari olan birçok paylaşılan bileşenleri olduğundan başarısız olacaktır.


Öyleyse, Microsoft neden "C: \ Program Files" ı 32 bit uygulamaların konumu haline getirmedi ki, bu eski yükleyiciler sorunlara neden olmaz. Ayrıca, neden bir ayrılık olması gerektiğini gerçekten anlamıyorum. Neden hepsi sadece "C: \ Program Files" a giremiyor?
CoderDennis

Her ikisinin de yapamamasının nedeni, bazı uygulamaların (özellikle paylaşılan bileşenlere sahip olanlar) 32 bit'te 64 bit ile aynı ada sahip dosyalara sahip olmasıdır. Neden böyle olduğu hakkında - hiçbir fikrim yok, muhtemelen o zamanlar çok iyi bir nedeni vardı ve sadece "yapılacak şey" olarak sıkışmış.
William Hilsum

4

Özel kurulumlar başka birimler (D: örneğin) altında programlar yükleyebileceğinden ve uluslararası kurulumlarda genellikle varsayılan olarak başka klasörler bulunduğundan , %ProgramFiles%(veya CSIDL_PROGRAM_FILES.NET altında Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)) dışında bir şey kullanırsanız yine de sorun yaşarsınız.

  • İspanyol Pencereler: C:\Archivos de Programa,
  • Fransız Pencereler: C:\Programmes,
  • Alman Pencereler: C:\Programme,
  • İsveççe Windows: C:\Program

vb.


Orijinal sorumda basit olmasını sağlamak için ortam değişkenlerinden bahsetmedim. Ben sadece %ProgramFiles%tam olarak soruna neden olan ne olduğunu gösteren bir düzenleme ekledim .
CoderDennis

3

Windows 7'nin 64 bit sürümleri altında (bu, diğer yeni işletim sistemi sürümleri için de geçerli olabilir, ancak bunu yalnızca Win 7 64 bit için onaylayabilirim),% ProgramFiles% aracınızın farklı konumu arasında bir fark olduğunu lütfen unutmayın. Explorer'da ve DOS'ta.

Windows 7 altında,% ProgramFiles% uygulamasının gerçek fiziksel klasör konumu (ve ilişkili% ProgramFiles (x86)% environemnt değişkeni), İngilizce sürümüne göre sabittir ; yani, "C: \ Program Files" ve "C: \ Program Files (x86)" ile uyumludur , ancak uygun olduğu şekilde yerelleştirilmiş araştırmacıda gösterilir .

Belirli bir örnek vermek için; İsveç Windows 7 64 bit yüklemesinde, Explorer'ı açar ve sistem sürücüsüne bakarsanız (genellikle C :) " Program " ve " Program (x86) " klasörlerini görürsünüz . Adres çubuğuna% ProgramFiles% yazmak sizi "C: \ Program" klasörüne taşır.

Ancak bir DOS kutusunu açar ve SET yazarsanız,% C Program \iles% gerçek değeri, "C: \ Program" klasör açıklayıcısı size değil, "C: \ Program Files" olduğunu göreceksiniz. CD ve DIR ile daha fazla keşfederek fiziksel olarak "C: \ Program Files" olduğunu görebilirsiniz

Ahlaki, çevre değişkenlerini veya programı API'lerle kullanırsanız, her şey çalışmaya devam edecektir, ancak dosya sistemini keşfederken bu ince değişikliğin farkında olun!


Lehçe sürümünde “Program Files (x86)” “Pliki programów (x86)”, “Program Files” ise… “Program Files” dır. Lehçe tuhaf bir dilbilgisine sahiptir. Ayrıca, lütfen buna DOS kutusu deme. Orada DOS yok.
kinokijuf
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.