내 Windows OS를 찾는 방법은 x64 또는 ia64입니까? C++ 9.0

ProtectionID로 Windows 디렉토리에서 실행 파일을 거의 스캔하지 않으면 Windows 탐색기를 스캔했습니다. 결과는 다음과 같습니다.

Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.548 Second(s)

내 프로세서가 Core 2 Duo이고 경고 플래그가 발생하는 x64 아키텍처라는 것을 알고 있습니다. 그러나 내가 설치 한 OS는 Windows 7 x64입니다. 위의 결과는 내 OS가 x64 또는 IA64라는 질문을 제기합니까? 어떻게 찾을 수 있습니까?

업데이트
최신 ProtectionID 빌드에서는이 잘못된 경고가 수정 된 것으로 보입니다.



답변

CPU 유형은 환경 변수 %PROCESSOR_ARCHITECTURE%echo %PROCESSOR_ARCHITECTURE%있어야하며 명령 프롬프트 AMD64에 x86-64 프로세서가 있어야합니다 . msinfo32.exe에는 “시스템 유형”필드도 있어야합니다.이 필드에는 x86-64 프로세서에서 x64 기반 PC가 표시됩니다. IA64 시스템 바이너리가 어떻게 / 왜 있는지 잘 모르겠습니다 …


ProtectionID에 문제가있는 것 같습니다.

Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.828 Second(s)

그러나 PE Stuff 탭에서 :

스크린 샷 (IMAGE_FILE_MACHINE_AMD64
전체 크기를 보려면 클릭


답변

Q 노트에 대한 첫 번째 의견으로 Windows 7의 IA64 빌드는 없습니다. IA64 버전의 경우 서버를 사용해야합니다.

이 정보를 확인하는 가장 신뢰할 수있는 방법은 WMI 및 Win32_OperatingSystemWin32_ComputerSystem 클래스를 사용하는 것 입니다.

PowerShell 및 gwmi별명을 사용하여 Get-WmiObject:

PS> gwmi win32_computersystem-컴퓨터 1,2, 로컬 호스트 | 피트 __SERVER, 시스템 유형

__SERVER 시스템 유형
-------- ----------
ONE X86 기반 PC
x64 기반 PC 2 대
x64 기반 PC 3 대

하나는 64 비트가 아니고 다른 두 개는 모두 x64이고 IA64는 없습니다. 1 다음 :

PS [64] E : \ # 12> gwmi win32_operatingsystem-하나, 둘, 로컬 호스트 작성 | 피트 __ 서버, 캡션

__ 서버 캡션
-------- -------
하나의 Microsoft® Windows Server® 2008 Standard
두 가지 Microsoft Windows Server 2008 R2 표준
3 개의 Microsoft Windows 7 Ultimate

따라서 1은 Win2k8 32 비트이고 2는 Win2k8R2 64 비트이며 3 (localhost)은 Win7 64 비트입니다.


1SystemType 필드의 가치를 확인할 IA64 시스템 이 없습니다.


답변

IA64 아키텍처는 x86-64 (일명 AMD64) 아키텍처와 완전히 다릅니다. 이는 대부분의 사람들이 64 비트를 말할 때 의미하는 것입니다. 따라서 IA64 호환 버전의 Windows 7 (다른 사람들이 지적했듯이 1 없음 ) 이 있더라도 Itanium 프로세서 가 필요하므로 Core 2에 설치할 수 없습니다 듀오 또는 기타 x86-64 시스템

편집 : 또한 명령 프롬프트 또는 PS에서 WMI를 사용하여 프로세서 아키텍처를 얻는 다른 방법 :

wmic CPU get Architecture

CPUWin32_Processor 클래스 의 별명이며 가능한 값 2 는 괄호 안의 의미입니다.

  • 0 (x86)
  • 9 (x86-64)
  • 6 (이타 늄)

1 IA64를 지원하는 마지막 클라이언트 버전은 Windows XP입니다. Windows Server 2008 R2가 마지막 서버 버전이 됩니다.
2 MIPS, Alpha 및 PowerPC와 같은 아키텍처에는 몇 가지가 있지만 대부분 레거시 이유로 인해 존재합니다. 자세한 내용은 위의 MSDN 기사를 참조하십시오.


답변

명령 창을 열고 다음을 실행하십시오.

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86


답변