Windows Vista 64 비트가 기본적으로 32 비트 cmd.exe를 사용하는 이유는 무엇입니까? (기계 별)
-
22-08-2019 - |
문제
그 상황:
현재 개발 환경을 Windows XP 32 비트에서 Windows Vista 64 비트 (*)로 변환해야합니다. 당연히, 나는 하드 코드 경로가 문제가되는 빌드 시스템의 많은 장소에 도달했습니다 (예 :C:\Program Files
"일어나"C:\Program Files (x86)
"). 다행히도, a %ProgramFiles%
소스 프로세스 (32 비트 또는 64 비트)를 기반으로 적절한 디렉토리에 매핑하는 환경 변수. 그래서 빌드 스크립트를 업데이트했습니다 %ProgramFiles%
, 그리고 나는 그것이 끝이 될 것이라고 확신했다.
빌드 환경은 명령 줄에서 호출됩니다 (C:\Windows\System32\cmd.exe
).
문제 :하나의 특정 기계 (즉, 직장에서의 Dev Machine)에서 C:\Windows\System32\cmd.exe
실제로 32 비트 프로세스이므로 스크립트는 x86
버전 Program Files
디렉토리와 모든 것이 훌륭하게 작동합니다.
다른 64 비트 머신에서 (내 홈 머신 포함), C:\Windows\System32\cmd.exe
64 비트 버전이고 32 비트 버전은 C:\Windows\SysWow64\cmd.exe
. 따라서 빌드 스크립트는 원하는 것을 찾고 실패 할 수 없습니다.
이제 32 비트를 이해합니다 cmd.exe
그것이 필요한 것이라면 명시 적으로 호출해야하며 기본적으로 64 비트를 얻습니다. cmd.exe
. 일반적인 경우 WORKSFORME
...
질문은 ~이야, 이것이 사실이 아닌 기계는 어떻게 되었습니까? 왜 내가 32 비트를 받고 있습니까? cmd.exe
하나의 기계에서는 기본적으로 다른 기계에서는 그렇지 않습니까? 모든 경우에 나는 명시 적으로 실행 중입니다 C:\Windows\System32\cmd.exe
~로부터 Start|Run
메뉴이지만 다른 결과를 얻습니다 하나의 기계에서만. 모두 Vista 64bit의 동일한 판을 운영하고 있습니다.
생각이나 통찰력이 있습니까?
(*) 내가 받아들이십시오 ~ 해야 하다 이 작업을 수행. 나는 자유롭지 않습니다 왜 나는 이것을하고있다. OS와 모든 것을 처음부터 다시 설치하면 아마도 효과가 있지만 확실히 과잉입니다. 게다가, 우리 IT 부서가 Vista 기계를 제공하도록 설득하는 것은 어려웠습니다!
해결책 2
마침내 문제를 발견했으며 예상대로 매우 간단합니다 : 사용자 오류. Explorer (Windows Vista 64 비트의 64 비트 프로세스 자체)는 기본적으로 64 비트 명령 프롬프트를 시작합니다. 32 비트를 원한다면 CMD.EXE
, 당신은 명시 적으로 참조해야합니다 C:\Windows\SysWoW64\CMD.EXE
.
이것이 내 시스템에서 잘 작동 한 이유는 대부분의 명령 줄 사용에 Far Manager를 사용하기 때문입니다. 이는 32 비트 (따라서 32 비트 명령 프롬프트를 시작). 내가 확인했을 때 나는 64 비트 창을 위해 32 비트 창을 혼동했을 것입니다.
센터로 죽어 가십시오 %ProgramFiles(x86)%
Windows Vista 32 비트에는 존재하지 않는 것입니다. 왜냐하면 그것은 실제로 더 간단했기 때문입니다.
아, 자신을 바보로 만들기 위해 공개 게시와 같은 것은 없습니다 ... :)
다른 팁
32 비트 프로세스에서 CMD를 실행 한 경우 파일 리디렉션으로 인해 32 비트 CMD를 얻을 수 있습니다 (http://msdn.microsoft.com/en-us/library/aa384187.aspx). Explorer에서 실행할 때 CMD의 32 비트 버전을 얻습니까?
cmd.exe
두 머신의 시작 메뉴 내에서 시작됩니다. 정확한 재현 :
- 시작 구를 클릭하십시오
- 유형 "
cmd
", 단 하나의 경기 만 나타납니다 (c:\windows\system32\cmd.exe
) - 그것을 시작하십시오.
내 작업 머신에서 32 비트 버전을 시작합니다 (작업 관리자가 보여 주듯이 *32
이름에 추가되었습니다 Processes
탭). 내가 시도한 다른 모든 Vista 64 기계에서 이것은 64 비트 버전을 시작합니다. cmd
, 그리고이 행동에 대한 합리적인 설명을 찾을 수 없습니다.
나는 확인하지 않았다 explorer.exe
자체는 영향을받는 기계에서 32 비트 또는 64 비트였으며 아마도 이것은 관련이있을 것입니다 ... 힌트에 감사드립니다.
대신에 %ProgramFiles%
, %Programfiles(x86)%
어떤 cmd.exe가 실행 중인지에 관계없이 항상 원하는 곳으로 갑니까? 내 Windows XP 64 비트 시스템에는 모두 그 시스템이 있습니다. Vista 시스템을 부팅하는 데 시간이 걸리지 않아 실례합니다.