TL; DR :
요약하면, 필요 하지 않습니다 . 그들은 단일 폴더를 사용할 수 있었으며 , 아닙니다. Windows는 특정 위치에서 실행되는 프로그램과 다르게 표시되지 않습니다.
글쎄, 모두 이것에 대한 의견을 던지고있는 것 같습니다. 그래서 나는 2 ¢를 던질 것입니다. 다른 사람이 이미에 관한 이유에 대한 추측 한 이유 Microsoft는 프로그램의 32 비트 및 64 비트 버전에 대해 별도의 최상위 폴더를 만들하기로 결정했습니다, 그래서 그 부분을 떠날거야 (가장 좋은 이유는이 같은 것을 다윗의 설명을했다 프로그래머 편의성). 물론, 이것이 왜 이것이 필요한지에 대한 직접적인 질문을 다루지 않습니다 . 에 대한 답은 아마도 아닙니다 .
대신 질문의 본문을 다룰 것입니다
"프로그램 파일 (x86)"이 실행되지 않는 프로그램과 Windows가 다르게 표시됩니까?
실제로는 아니지만 프로그램의 위치 는 동작에 영향을 줄 수 있지만 생각하는 방식에는 영향을 미치지 않습니다.
프로그램을 실행할 때 Windows는 프로그램을 실행할 환경을 설정합니다 (환경 변수뿐만 아니라 메모리, 주소 지정 등을 의미합니다). 이 환경은 실행 파일의 내용에 따라 다릅니다 (32 비트 및 64 비트 프로그램은 내부적으로 다릅니다). 64 비트 시스템에서 32 비트 프로그램을 실행하면 32 비트 환경을 에뮬레이트하는 32 비트 서브 시스템에서 실행됩니다. WoW64 (WoW64는 Windows 64 비트의 Windows를 나타냄 )라고 하며 NTVDM을 사용하여 XP에서 16 비트 앱을 실행하는 방법과 유사합니다 .
관리자 권한이 있거나없는 프로그램을 실행하면 프로그램 실행 방법에 영향을 주지만 위치 는 영향을 미치지 않아야 합니다 (예를 들어 일부 드라이버와 같은 위치 종속성의 예가 있음).
(나는 다른 컴퓨터를 사용하고, 그래서 난 내 브라우저 기록에 의존 할 수없는 나의 단계를 역 추적하는 것이 아니라 다른 날에 대답하면서 이 SU 질문 난에 결국 이 SO 질문 에 저를 발생 구글 PROCESSOR_ARCHITEW6432 으로 이어질 이 SO 질문 과 이 Microsoft 블로그 게시 .)
어딘가에서 환경 변수 %processor_architecutre%
가 명령 프롬프트를 실행하는 위치에 따라 어떻게 다른 결과를 제공 하는지에 대한 StackOverflow 게시물을 읽었습니다 (정확한 인용문을 찾으려고 노력할 것입니다).
대답은 32 비트 또는 64 비트 버전의 명령 프롬프트가 실행되었는지 여부 (예 : System32\
또는 from SysWoW64\
) 때문입니다. 즉, 위치 가 프로그램의 동작 에 영향 을 미치는 것처럼 보이지만 Windows가 폴더를 특별한 방식으로 취급하기 때문이 아니라 다른 버전의 프로그램이 있기 때문입니다.
실행 파일의 내용이 32 비트인지 64 비트인지를 나타내므로 동일한 폴더에 동일한 프로그램 (예 : foobar32.exe
및 foobar64.exe
) 의 32 비트 및 64 비트 복사본을 둘 다 넣을 수 있습니다. 그것들을 실행하면 올바르게로드됩니다 (64 비트 버전은 기본적으로 실행되고 32 비트 버전은 WoW64 에뮬레이션 계층에서 실행됩니다).
FreePascal을 사용하면 DOS 및 Windows 버전을 모두 설치할 수 있으며 동일한 폴더에 %programfiles%\FreePascal
있습니다. 그것은 (실행 파일을 유지하여 다른 아키텍처를 관리 .exe
, .sys
, .dll
, .ovr
등, 소스 파일)이도 32과에 대해 수행 할 수 없다는 기술적 이유가 없다을 별도의 폴더에, 등) 및 사진과 같은 리소스 파일을 공유 64 비트 버전의 프로그램. David가 말했듯이, 프로그래머가 분리되어 유지되면 프로그래머가 더 쉽습니다 (즉, 변수를 사용하여 파일 세트가 하나만있는 것처럼 보이게합니다).