Warum installiert Windows 7 64-Bit-Apps im Ordner "Programme" (x86)? Kann ich das Verhalten ändern?

12

Ich verwende seit dem CTP die 64-Bit-Version von Windows 7 und habe einige Probleme mit Anwendungen, die im C:\Program Files (x86)Ordner installiert werden . Was ist der Zweck von 2 separaten Programmdateiverzeichnissen?

Jedes Programm, das ich installiert habe, wurde in den C:\Program Files (x86)Ordner verschoben. Es scheint keine Rolle zu spielen, ob die App 32 oder 64 Bit ist. Warum werden keine 64-Bit-Apps platziert C:\Program Files?

Gibt es eine Möglichkeit, die Standardeinstellung zu ändern C:\Program Files? Würde es irgendetwas durcheinander bringen, wenn ich einfach alles hineinstecke C:\Program Files?

Wenn ein separater Ordner für 64-Bit-Apps tatsächlich von Vorteil ist, scheint es sinnvoller gewesen zu sein, ihn C:\Program Filesfür x86-Apps zu verwenden und einen neuen C:\Program Files (x64)Ordner für die neuen 64-Bit-Apps zu erstellen . Dies würde dazu beitragen, die Abwärtskompatibilität aufrechtzuerhalten. Ich arbeite als Softwareentwickler und einige meiner Projekte enthalten Pfadverweise auf Bibliotheken unter C:\Program Files. Jetzt sind diese Verweise auf dem Windows 7-Computer, auf dem sie abgelegt wurden, fehlerhaft C:\Program Files (x86). Ich habe sogar versucht, den Zielspeicherort im Installationsprogramm zu ändern C:\Program Files, aber das wurde ignoriert und die App ging C:\Program Files (x86)trotzdem hinein.

Dies ist sehr frustrierend, da ich Quellcode zwischen 32- und 64-Bit-Computern freigeben muss und nicht mit einer Konfigurationsdatei herumspielen möchte, die den Pfad zu diesen Bibliotheken auf verschiedenen Computern unterschiedlich festlegt.

Bearbeiten in Bezug auf Umgebungsvariablen: (. Mit nur Englisch Werte der Variablen der Einfachheit halber Standard) Auf einem 64-Bit - Maschine %ProgramFiles%wird , C:\Program Fileswährend die Marke neue Variable %ProgramFiles(x86)%sein wird C:\Program Files (x86). Wenn Sie also ein 32-Bit-Programm haben, das den Ordnerpfad finden muss, unter dem es installiert werden soll, muss es überprüfen, ob es in einer 32-Bit- oder einer 64-Bit-Version von Windows ausgeführt wird um zu wissen, welche Umgebungsvariable verwendet werden soll. Alle 32-Bit-Apps, die ohne diese Überlegung geschrieben wurden, müssen aktualisiert werden, damit sie auf einem 64-Bit-Computer ordnungsgemäß funktionieren. Selbst bei Verwendung von Umgebungsvariablen ist die Abwärtskompatibilität beeinträchtigt.

Auch %ProgramFiles(x86)%existiert nicht auf 32-Bit-Versionen von Windows. Wenn dies der Fall wäre, könnten 32-Bit-Apps diese Umgebungsvariable einfach immer verwenden und benötigen keine bedingte Logik, die darauf basiert, auf welchem ​​Betriebssystem sie ausgeführt werden.

CoderDennis
quelle
6
Sind Sie sicher, dass diese Apps tatsächlich 64-Bit sind? In den meisten Fällen finden Sie Programme, die nur 64-Bit-kompatibel sind, aber tatsächlich 32-Bit-Anwendungen.
John T
Ich frage mich, ob die Verwendung der %ProgramFiles%Umgebungsvariablen dies gelöst hätte. Ich bin mir nicht sicher, wie ich mit dem x86 / 64-Bit-Unterschied umgehen soll.
Ceejayoz

Antworten:

7

Der Grund dafür ist einfach, dass viele ältere Installer entweder die neue Dateistruktur nicht verstehen und alles in das Standardverzeichnis der Programmdateien einfügen, oder Sie sich ein intelligentes Programm ansehen, das einige 32-Bit-Komponenten enthält, die dort kopiert werden.

Am besten laden Sie ein neues Programm herunter - beispielsweise x64 Winrar - und sehen, wo es installiert wird, um ein Problem mit Ihrem Computer auszuschließen.

Was das Durcheinander betrifft - es kann, aber es hängt wirklich vom Programm ab, es gibt keine Antwort für alle ... einige kleinere, kompakte Programme mit nur wenigen Dateien sollten kein Problem haben, wenn Sie über Office sprechen Bei Adobe oder einer anderen "Suite" oder einem großen Programm wird dies höchstwahrscheinlich fehlschlagen, da viele gemeinsam genutzte Komponenten architekturübergreifend sind.

William Hilsum
quelle
Warum hat Microsoft "C: \ Programme" nicht zum Speicherort für 32-Bit-Apps gemacht, damit diese alten Installationsprogramme keine Probleme verursachen. Außerdem verstehe ich nicht wirklich, warum es eine Trennung geben muss. Warum können nicht alle einfach in "C: \ Programme" gehen?
CoderDennis
Der Grund, warum beide dies nicht können, ist, dass einige Anwendungen (insbesondere solche mit gemeinsam genutzten Komponenten) Dateien mit demselben Namen auf 32-Bit wie 64-Bit haben. Warum das so ist - ich habe keine Ahnung, jemand hatte damals wahrscheinlich einen sehr guten Grund und es ist einfach als "das, was zu tun ist" geblieben.
William Hilsum
4

Wenn Sie etwas anderes als %ProgramFiles%(oder CSIDL_PROGRAM_FILESoder unter .NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)) verwenden, sind Sie ohnehin in Schwierigkeiten, da bei benutzerdefinierten Installationen Programme unter anderen Volumes installiert werden können (z. B. D) und bei internationalen Installationen häufig standardmäßig andere Ordner vorhanden sind.

  • Spanisch Windows : C:\Archivos de Programa,
  • Französisch Windows : C:\Programmes,
  • Deutsche Windows : C:\Programme,
  • Schwedische Windows: C:\Program

etc.

Zano
quelle
Ich habe in meiner ursprünglichen Frage keine Umgebungsvariablen erwähnt, um es einfach zu halten. Ich habe gerade eine Bearbeitung hinzugefügt, die darauf hinweist, wie %ProgramFiles%genau das Problem durch die Verwendung verursacht wird.
CoderDennis
3

Bitte beachten Sie, dass unter 64-Bit-Versionen von Windows 7 (dies gilt möglicherweise auch für andere neuere Betriebssystemversionen, ich kann dies jedoch nur für Win 7 64-Bit bestätigen) ein Unterschied zwischen dem übergeordneten Speicherort Ihrer% ProgramFiles% besteht. im Explorer und unter DOS.

Unter Windows 7 ist der tatsächliche physische Ordner von% ProgramFiles% (und der zugehörigen Umgebungsvariablen% ProgramFiles (x86)%) gemäß der englischen Version festgelegt . dh "C: \ Programme" und "C: \ Programme (x86)", wird jedoch im Exploer angezeigt, der entsprechend lokalisiert ist .

Um ein konkretes Beispiel zu geben; Wenn Sie bei einer schwedischen 64-Bit-Installation von Windows 7 den Explorer öffnen und in das Systemlaufwerk schauen (normalerweise C :), werden die Ordner " Programm " und " Programm (x86) " angezeigt. Wenn Sie% ProgramFiles% in die Adressleiste eingeben, gelangen Sie zu "C: \ Program".

Wenn Sie jedoch ein DOS-Feld öffnen und SET eingeben, sehen Sie, dass der tatsächliche Wert von% ProgramFiles% "C: \ Programme" ist und nicht der Ordner-Exploer "C: \ Program". Weitere Erkundungen mit CD und DIR, die Sie physisch sehen können, sind "C: \ Programme".

Die Moral ist, wenn Sie die Umgebungsvariablen oder das Programm über die APIs verwenden, funktioniert immer noch alles, aber beachten Sie diese subtile Änderung, wenn Sie das Dateisystem erkunden!

Pete Stensønes
quelle
In der polnischen Version ist "Programme (x86)" "Pliki programów (x86)", während "Programme", na ja ... "Programme" ist. Polnisch hat eine seltsame Grammatik. Nennen Sie es auch keine DOS-Box. Es gibt dort kein DOS.
Kinokijuf