Windows 7이 Program Files (x86) 폴더에 64 비트 앱을 설치하는 이유는 무엇입니까? 행동을 바꿀 수 있습니까?


12

CTP 이후 64 비트 버전의 Windows 7을 사용해 왔으며 C:\Program Files (x86)폴더에 설치되는 응용 프로그램에서 몇 가지 문제가 발생했습니다 . 어쨌든 두 개의 별도 Program Files 디렉토리를 갖는 목적은 무엇입니까?

내가 설치 한 모든 프로그램이 C:\Program Files (x86)폴더에 들어갔습니다 . 앱이 32 비트인지 64 비트인지는 중요하지 않습니다. 64 비트 앱이 배치되지 않는 이유는 무엇 C:\Program Files입니까?

C:\Program Files대신 기본값을 변경하는 방법이 있습니까? 방금 모든 것을 넣으면 아무것도 엉망이 C:\Program Files됩니까?

실제로 64 비트 앱용으로 별도의 폴더를 갖는 것이 이점이 있다면, C:\Program Filesx86 앱용 으로 사용 C:\Program Files (x64)하고 새로운 64 비트 앱용 으로 새 폴더를 만드는 것이 더 합리적인 것처럼 보입니다 . 이는 이전 버전과의 호환성을 유지하는 데 도움이됩니다. 소프트웨어 개발자로 일하고 있으며 일부 프로젝트에는 아래의 라이브러리에 대한 경로 참조가 포함되어 있습니다 C:\Program Files. 이제 이러한 참조는에 배치 된 Windows 7 시스템에서 손상되었습니다 C:\Program Files (x86). 설치 프로그램에서 대상 위치를로 변경하려고 시도했지만 C:\Program Files무시되었지만 앱은 계속 진행되었습니다 C:\Program Files (x86).

32 비트와 64 비트 컴퓨터간에 소스 코드를 공유해야하므로 다른 컴퓨터에서 이러한 라이브러리의 경로를 다르게 설정하는 일부 구성 파일을 망칠 필요가 없기 때문에 이는 매우 실망스러운 일입니다.

환경 변수에 대한 편집 : (. 단순에 대한 변수의 영어 기본값 만 사용) 64 비트 시스템에서이 %ProgramFiles%될 것입니다 C:\Program Files브랜드의 새로운 변수가 동시에 %ProgramFiles(x86)%될 것입니다 C:\Program Files (x86). 따라서 설치 될 폴더 경로를 찾아야하는 32 비트 프로그램이있는 경우 32 비트 또는 64 비트 버전의 Windows에서 실행 중인지 확인해야합니다. 사용할 환경 변수를 알기 위해 이 고려 사항없이 작성된 32 비트 앱은 64 비트 시스템에서 올바르게 작동하려면 업데이트해야합니다. 따라서 환경 변수를 사용하더라도 이전 버전과의 호환성이 손상됩니다.

또한 %ProgramFiles(x86)%32 비트 버전의 Windows에는 없습니다. 그렇다면 32 비트 앱은 항상 해당 환경 변수를 사용할 수 있으며 실행중인 OS에 따라 조건부 논리가 필요하지 않습니다.


6
이 앱이 실제로 64 비트라고 생각하십니까? 대부분의 경우 64 비트 호환이지만 실제로는 32 비트 응용 프로그램 인 프로그램을 찾을 수 있습니다.
John T

%ProgramFiles%환경 변수를 사용하면 문제가 해결 되는지 궁금합니다 . 그것이 x86 / 64bit 차이를 어떻게 처리하는지 잘 모르겠습니다.
ceejayoz

답변:


7

그 이유는 단순히 기존의 많은 설치 프로그램이 새로운 파일 구조를 이해하지 못하고 표준 프로그램 파일 디렉토리의 모든 항목을 이해하지 못하거나 거기에 복사되는 32 비트 구성 요소가 몇 개있는 스마트 프로그램을 찾고 있기 때문입니다.

가장 좋은 방법은 x64 Winrar 와 같은 새 프로그램을 다운로드하고 컴퓨터의 문제를 배제하기 위해 설치 위치를 확인하는 것입니다.

엉망진창-그것은 가능하지만 실제로 프로그램에 달려 있습니다. 모두에 맞는 대답은 없습니다 ... 몇 개의 파일 만있는 작고 컴팩트 한 프로그램에는 아무런 문제가 없어야합니다. , Adobe 또는 기타 "스위트"또는 대규모 프로그램의 경우 아키텍처 간 공유 구성 요소가 많기 때문에 실패 할 가능성이 높습니다.


따라서 왜 Microsoft가 "C : \ Program Files"를 32 비트 앱의 위치로 지정하지 않아 이전 설치 프로그램이 문제를 일으키지 않았습니까? 또한 왜 분리가 필요한지 이해하지 못합니다. 왜 모두 "C : \ Program Files"로 들어갈 수 없습니까?
CoderDennis

둘 다 할 수없는 이유는 일부 응용 프로그램 (특히 공유 구성 요소가있는 응용 프로그램)이 32 비트의 이름이 64 비트와 동일한 파일을 가지고 있기 때문입니다. 그것이 왜 이런 식인지에 관해서는-나는 전혀 모른다. 아마도 누군가는 아마도 아주 좋은 이유가 있었으며 단순히 "해야 할 일"로 붙어 있었다.
윌리엄 힐섬

4

당신이 아닌 다른를 사용하는 경우 %ProgramFiles%(또는 CSIDL_PROGRAM_FILES, 또는 .NET에서 Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)) 사용자 정의 설치는 다른 볼륨 (D : 예를 들어) 아래에 설치된 프로그램 할 수 있기 때문에, 당신은 문제가 어쨌든에있어 국제 설치를 종종 기본적으로 다른 폴더가 있습니다.

  • 스페인어 윈도우 : C:\Archivos de Programa,
  • 프랑스어 Windows : C:\Programmes,
  • 독일어 Windows : C:\Programme,
  • 스웨덴어 Windows : C:\Program

기타


간단하게 유지하기 위해 원래 질문에 환경 변수를 언급하지 않았습니다. 방금 사용 %ProgramFiles%이 문제를 일으키는 원인을 나타내는 편집 내용을 추가했습니다 .
CoderDennis

3

64 비트 버전의 Windows 7 (이것은 다른 최신 OS 버전에도 적용될 수 있지만 Win 7 64 비트의 경우에만 확인할 수 있음)에서 % ProgramFiles의 상위 위치에 차이가 있음에 유의하십시오. 탐색기와 DOS에서.

Windows 7에서 % ProgramFiles %의 실제 실제 폴더 위치 (및 관련 % ProgramFiles (x86) % environemnt 변수)는 영어 버전에 따라 고정됩니다 . 즉, "C : \ Program Files"및 "C : \ Program Files (x86)"respectivley이지만 적절하게 현지화 된 탐색기에 표시됩니다 .

구체적인 예를 제공하기 위해; 스웨덴어 Windows 7 64 비트 설치에서 탐색기를 열고 시스템 드라이브 (일반적으로 C :)를 보면 " Program "및 " Program (x86) "폴더가 나타납니다. 주소 표시 줄에 % ProgramFiles %를 입력하면 "C : \ Program"으로 이동합니다.

그러나 DOS 상자를 열고 SET을 입력하면 "C : \ Program"폴더 탐색기가 아닌 % ProgramFiles %의 실제 값이 "C : \ Program Files"임을 알 수 있습니다. CD와 DIR을 더 자세히 살펴보면 실제로 "C : \ Program Files"라는 것을 알 수 있습니다.

도덕은 API를 통해 환경 변수 또는 프로그램을 사용하면 모든 것이 여전히 작동하지만 파일 시스템을 탐색 할 때이 미묘한 변화를 알고 있다는 것입니다!


폴란드어 버전에서“프로그램 파일 (x86)”은“Pliki programów (x86)”이며“프로그램 파일”은“프로그램 파일”입니다. 폴란드어에는 이상한 문법이 있습니다. 또한 DOS 상자라고 부르지 마십시오. DOS는 없습니다.
kinokijuf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.