วิธีค้นหา Windows OS ของฉันคือ x64 หรือ ia64


12

เมื่อฉันสแกนไฟล์เรียกทำงานไม่กี่ไฟล์ในไดเรกทอรี windows ของฉันด้วยProtectionIDฉันเกิดขึ้นเพื่อสแกน Windows Explorer และผลลัพธ์ที่ได้รับด้านล่าง

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 ที่ทำให้เกิดการเตือน แต่ระบบปฏิบัติการที่ฉันติดตั้งคือ Windows 7 x64 ผลลัพธ์ข้างต้นทำให้ฉันสงสัยว่าระบบปฏิบัติการของฉันคือ x64 หรือ IA64 ฉันจะหาสิ่งนั้นได้อย่างไร

อัปเดต ใน Build Build ล่าสุดของ ProtectionID คำเตือนที่ผิดนี้ดูเหมือนว่าได้รับการแก้ไข


3
เท่าที่ฉันเห็นเฉพาะรุ่นเซิร์ฟเวอร์ของ Windows เท่านั้นที่มีรุ่นที่ชัดเจนสำหรับสถาปัตยกรรม Itanium (aka IA64) ด้วย Win7 64 บิตเพียงรองรับชุดคำสั่ง "ปกติ" x64 คุณแน่ใจ100%ว่าคุณติดตั้ง Windows 7 รุ่น 64 บิตหรือไม่ และคุณแน่ใจ100%ว่า CPU ของคุณมีข้อผิดพลาด 64 บิต (ฉันไม่ได้ตรวจสอบหาก Core 2 Duos ทั้งหมดเป็น) โอ้และexe ทำงาน (ฉันสมมติว่าเป็นอย่างอื่นที่คุณมีปัญหาร้ายแรงเกี่ยวกับระบบปฏิบัติการ)? ถ้าเป็นเช่นนั้นฉันจะสงสัยว่าซอฟต์แวร์ได้รับการอ่านที่ถูกต้องหรือไม่โปรดตรวจสอบกับสิ่งอื่น
DMA57361

ชนิดของ CPU ควรอยู่ในตัวแปรสภาพแวดล้อม%PROCESSOR_ARCHITECTURE%และecho %PROCESSOR_ARCHITECTURE%ในพร้อมท์คำสั่งควรให้คุณAMD64(ตามที่คุณบอกว่าคุณใช้ Core 2 Duo) msinfo32.exeควรมีฟิลด์ "ประเภทระบบ" ซึ่งบอกx64-based PCฉันด้วยโปรเซสเซอร์ x86-64 ผมไม่แน่ใจว่าวิธีการ / เหตุผลที่คุณต้องไบนารี IA64 ระบบ ...
บ๊อบ

6
นั่นหรือ ProtectionID ถูกทำลาย

ProtectionID รุ่นใด
David Schwartz

@ DMA57361 - ฉันเป็น Core 2 Duo E7300 ฉันใช้ Windows 7 x64 Ultimate ตาม taskmgr ของฉันประมาณ 40% ของกระบวนการของฉันทำงานในโหมดความเข้ากันได้ x86 เช่นกับ * 32 ต่อท้ายหลังจากชื่อภาพ
โจนส์

คำตอบ:


18

ชนิดของ CPU ควรอยู่ในตัวแปรสภาพแวดล้อม%PROCESSOR_ARCHITECTURE%และecho %PROCESSOR_ARCHITECTURE%ในพรอมต์คำสั่งควรให้คุณAMD64กับโปรเซสเซอร์ x86-64 msinfo32.exe ควรมีฟิลด์ "System Type" ซึ่งระบุว่าพีซีที่ใช้ x64 สำหรับฉันในโปรเซสเซอร์ x86-64 ฉันไม่แน่ใจว่าอย่างไร / ทำไมคุณมีไบนารีระบบ 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
คลิกเพื่อดูขนาดเต็ม


ล่องเรือในเรือลำเดียวกัน! นอกจากนี้ Misc Tools -> Misc Tools / ข้อมูลระบบ -> สถาปัตยกรรมโปรเซสเซอร์ระบุว่า 'Intel (x86) based'
Jones

5

ในฐานะที่เป็นความคิดเห็นแรกในหมายเหตุ Q ไม่มี IA64 build ของ Windows 7 สำหรับรุ่น IA64 คุณต้องใช้เซิร์ฟเวอร์

บางทีอาจจะเป็นวิธีที่เชื่อถือได้มากที่สุดในการตรวจสอบข้อมูลนี้จะมี WMI และเรียนWin32_OperatingSystemและWin32_ComputerSystem

การใช้ PowerShell และgwmiนามแฝงสำหรับGet-WmiObject:

PS> gwmi win32_computersystem - คอมพิวเตอร์หนึ่งสอง localhost | ft __SERVER ประเภทของระบบ

__SERVER ประเภทของระบบ
-------- ----------
พีซีที่ใช้ X86 หนึ่งเครื่อง
พีซีสองเครื่องที่ใช้ x64
พีซีที่ใช้ x64 สามเครื่อง

ดังนั้นหนึ่งไม่ใช่ 64 บิตและอีกสองเป็น x64 ไม่มี IA64 1จากนั้น:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp หนึ่งสอง localhost | ft __SERVER คำบรรยายภาพ

__ คำบรรยายใต้ภาพ
-------- -------
หนึ่งMicrosoft® Windows Server® 2008 Standard
Microsoft Windows Server 2008 R2 สองมาตรฐาน
สาม Microsoft Windows 7 Ultimate

ดังนั้นหนึ่งคือ Win2k8 32 บิตสองคือ Win2k8R2 64 บิตและสาม (localhost) คือ Win7 64 บิต


1ฉันไม่มีระบบ IA64 เพื่อตรวจสอบค่าที่SystemTypeจะมีในฟิลด์


3

สถาปัตยกรรม IA64 นั้นแตกต่างจากสถาปัตยกรรม x86-64 (aka AMD64) อย่างสิ้นเชิงซึ่งเป็นสิ่งที่คนส่วนใหญ่มีความหมายเมื่อพูดถึง 64 บิต ดังนั้นแม้ว่าจะมี Windows 7 รุ่นที่เข้ากันได้กับ IA64 (ซึ่งในขณะที่คนอื่น ๆ ชี้ว่าไม่มี1 ) มันจะต้องมีโปรเซสเซอร์ Itaniumคุณจะไม่สามารถติดตั้งบน Core 2 Duo หรือระบบ x86-64 อื่น ๆ

แก้ไข: อีกวิธีหนึ่งในการรับสถาปัตยกรรมโปรเซสเซอร์ด้วย WMI (จากพรอมต์คำสั่งหรือ PS):

wmic CPU get Architecture

CPUเป็นนามแฝงสำหรับคลาสWin32_Processorและค่าที่เป็นไปได้2คือ (ความหมายในวงเล็บ):

  • 0 (x86)
  • 9 (x86-64)
  • 6 (Itanium)

1เวอร์ชันไคลเอนต์สุดท้ายที่รองรับ IA64 คือ Windows XP Windows Server 2008 R2 จะเป็นเซิร์ฟเวอร์รุ่นล่าสุด
2มีอีกสองสามคนสำหรับสถาปัตยกรรมเช่น MIPS, Alpha และ PowerPC แต่ส่วนใหญ่จะอยู่ที่นั่นด้วยเหตุผลดั้งเดิม ดูบทความ MSDN ด้านบนสำหรับรายละเอียดทั้งหมด


@ William.Ebe CPU มาตรฐาน x86-64 ตามที่คาดไว้ ปัญหาน่าจะอยู่ที่ ProtectionID แล้ว ดีใจที่ฉันสามารถช่วย โปรดอย่าลืมยอมรับคำตอบที่ช่วยคุณได้มากที่สุดโดยคลิกที่เครื่องหมายถูกสีเขียวที่อยู่ถัดจากคำตอบนั้น
Indrek

-1

เปิดหน้าต่างคำสั่งและเรียกใช้สิ่งต่อไปนี้:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
การแสดงรายการตัวแปรทั้งหมดจากนั้นการกรองอย่างใดอย่างหนึ่งจะไม่มีประสิทธิภาพเมื่อคุณรู้ชื่อแล้ว เพียงใช้ตัวแปรสภาพแวดล้อมโดยตรงตามที่ฉันอธิบายไว้ในคำตอบของฉัน
บ๊อบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.