Windows Vista 64 비트가 기본적으로 32 비트 cmd.exe를 사용하는 이유는 무엇입니까? (기계 별)

StackOverflow https://stackoverflow.com/questions/373351

문제

그 상황:

현재 개발 환경을 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 시스템을 부팅하는 데 시간이 걸리지 않아 실례합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top