TL; DR:
Podsumowując, nie, nie jest to konieczne ; one mogły być stosowane jeden folder, a nie, system Windows nie przedstawiać się odmiennie do programu są uruchamiane z jednego lub drugiego.
Cóż, wszyscy wydają się wypowiadać na ten temat, więc wrzucę 2 ¢. Inni już domyślili się, dlaczego Microsoft postanowił utworzyć osobne foldery najwyższego poziomu dla 32-bitowych i 64-bitowych wersji programów, więc zostawię tę część (najlepszym powodem było wyjaśnienie Davida, że jest to wygoda dla programistów). Oczywiście nawet wtedy nie odpowiada na bezpośrednie pytanie, dlaczego jest to w ogóle konieczne? , na które odpowiedź brzmi: nie .
Zamiast tego odniosę się do głównej części pytania
Czy system Windows w jakiś sposób prezentuje się inaczej niż program, na którym kończy się „Program Files (x86)”?
Nie do końca, ale lokalizacja programu może wpływać na zachowanie, ale nie w sposób, w jaki myślisz.
Kiedy uruchamiasz program, Windows konfiguruje środowisko, w którym chcesz go uruchomić (mam na myśli pamięć, adresowanie itp., Nie tylko zmienne środowiskowe). To środowisko zależy od zawartości pliku wykonywalnego (programy 32-bitowe i 64-bitowe różnią się wewnętrznie). Po uruchomieniu programu 32-bitowego w systemie 64-bitowym działa on w 32-bitowym podsystemie, który emuluje środowisko 32-bitowe. Nazywa się WoW64 (WoW64 oznacza Windows w 64-bitowym systemie Windows ) i jest podobny do tego, jak 16-bitowe aplikacje będą uruchamiane w XP za pomocą NTVDM .
Uruchamianie programu z uprawnieniami administratora lub bez niego wpływa na to, jak działa, ale lokalizacja nie powinna na niego wpływać (chociaż istnieją pewne przykłady zależności lokalizacji, na przykład niektóre sterowniki).
(Korzystam z innego komputera, więc nie mogę polegać na historii przeglądarki, aby cofnąć swoje kroki, ale pewnego dnia, odpowiadając na to pytanie SU , skończyłem na tym SO pytaniu, które spowodowało, że trafiłem do Google PROCESSOR_ARCHITEW6432, które doprowadziły do tego SO pytania i ten post na blogu Microsoft ).
Gdzieś po drodze przeczytałem post StackOverflow o tym, jak zmienna środowiskowa %processor_architecutre%
daje różne wyniki w zależności od tego, z którego miejsca uruchomiono wiersz polecenia (postaram się znaleźć dokładny cytat).
Odpowiedź okazała się należna, niezależnie od tego, czy uruchomiono 32-bitową czy 64-bitową wersję wiersza polecenia (tj. Z System32\
lub SysWoW64\
). Innymi słowy, chociaż lokalizacja wydaje się wpływać na zachowanie programu, dzieje się tak tylko dlatego, że istnieją różne wersje programu, a nie dlatego, że Windows traktuje folder w specjalny sposób.
Ma to sens, ponieważ zawartość pliku wykonywalnego decyduje o tym, czy jest to wersja 32-bitowa, czy 64-bitowa, więc możesz umieścić zarówno 32-bitową, jak i 64-bitową kopię tego samego programu (np. foobar32.exe
I foobar64.exe
) w tym samym folderze i kiedy wykonaj je, zostaną poprawnie załadowane (wersja 64-bitowa zostanie uruchomiona natywnie, a wersja 32-bitowa będzie uruchomiona w warstwie emulacji WoW64).
FreePascal umożliwia zainstalowanie zarówno wersje DOS i Windows i idą w tym samym folderze: %programfiles%\FreePascal
. Zarządza różnych architektur utrzymując pliki wykonywalne ( .exe
, .sys
, .dll
, .ovr
, itd.) W oddzielnych folderach i udostępnianie plików zasobów jak zdjęcia, pliki źródłowego, itd), nie ma powodów technicznych, że to nie może być również wykonane dla 32- i 64-bitowe wersje programu. Jak powiedział David, programiście jest po prostu łatwiej, jeśli są trzymane osobno (tj. Używając zmiennych, aby wyglądać, jakby był tylko jeden zestaw plików itp.)