Làm cách nào để tìm HĐH Windows của tôi là x64 hoặc ia64?


12

Khi tôi quét một vài tệp thực thi trong thư mục windows của mình bằng ProtectionID , tôi đã tình cờ quét Windows Explorer. Và kết quả được đưa ra dưới đây.

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)

Tôi biết rằng bộ xử lý của tôi là Core 2 Duo và đó là kiến ​​trúc x64 do cờ cảnh báo. Nhưng hệ điều hành tôi đã cài đặt là Windows 7 x64. Các kết quả trên cho tôi một câu hỏi rằng hệ điều hành của tôi là x64 hay IA64? Làm thế nào tôi có thể tìm thấy điều đó?

Cập nhật Trong bản dựng mới nhất của ProtectionID, cảnh báo sai này dường như đã được sửa.


3
Theo như tôi chỉ có thể thấy các phiên bản Máy chủ của Windows có phiên bản rõ ràng cho kiến ​​trúc Itanium (còn gọi là IA64), với Win7 64 bit chỉ hỗ trợ tập lệnh x64 "thông thường". Bạn có chắc chắn 100% đã cài đặt phiên bản Windows 7 64 bit không? Và bạn có chắc chắn 100% rằng CPU của bạn chắc chắn là 64 bit (Tôi chưa kiểm tra xem tất cả các Duos Core 2 có phải không). Ồ, và có exe hoạt động không (tôi giả sử vì vậy bạn sẽ gặp sự cố nghiêm trọng về hệ điều hành)? Nếu vậy, tôi nghi ngờ rằng phần mềm được đọc hợp lệ, hãy kiểm tra với thứ khác.
DMA57361

Loại CPU phải nằm trong biến môi trường %PROCESSOR_ARCHITECTURE%echo %PROCESSOR_ARCHITECTURE%trong dấu nhắc lệnh sẽ cung cấp cho bạn AMD64(như bạn nói bạn đang sử dụng Core 2 Duo). msinfo32.execũng nên có trường "Loại hệ thống", theo x64-based PCtôi trên bộ xử lý x86-64. Tôi không chắc chắn làm thế nào / tại sao bạn có hệ thống nhị phân IA64 ...
Bob

6
Điều đó, hoặc ProtectionID bị hỏng.

Phiên bản nào của ProtectionID?
David Schwartz

@ DMA57361 - Tôi có Core 2 Duo E7300. Tôi đã có Windows 7 x64 Ultimate. Theo taskmgr của tôi, khoảng 40% các quy trình của tôi đang chạy ở chế độ tương thích x86, tức là có hậu tố * 32 sau tên hình ảnh.
Jones

Câu trả lời:


18

Loại CPU phải nằm trong biến môi trường %PROCESSOR_ARCHITECTURE%echo %PROCESSOR_ARCHITECTURE%trong dấu nhắc lệnh sẽ cung cấp cho bạn AMD64bộ xử lý x86-64. msinfo32.exe cũng nên có trường "Loại hệ thống", có nghĩa là PC dựa trên x64 cho tôi trên bộ xử lý x86-64. Tôi không chắc chắn làm thế nào / tại sao bạn có hệ thống nhị phân IA64 ...


Có vẻ như đó là một vấn đề với 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)

Nhưng trong tab PE Stuff:

Ảnh chụp màn hình (IMAGE_FILE_MACHINE_AMD64
Bấm vào để xem kích thước đầy đủ


Đi thuyền trong cùng một chiếc thuyền! Ngoài ra, Công cụ Misc -> Công cụ linh tinh / Thông tin hệ thống -> Kiến trúc bộ xử lý nói 'Intel (x86) dựa trên'
Jones

5

Như nhận xét đầu tiên về ghi chú Q, không có bản dựng IA64 của Windows 7. Đối với phiên bản IA64, bạn phải sử dụng máy chủ.

Có lẽ cách đáng tin cậy nhất để xác định thông tin này là với WMI và các lớp Win32_OperatingSystemWin32_ComputerSystem .

Sử dụng PowerShell và gwmibí danh cho Get-WmiObject:

PS> gwmi win32_computersystem - máy tính một, hai, localhost | ft __SERVER, hệ thống

__SERVER hệ thống
-------- ----------
Máy tính dựa trên ONE X86
Máy tính dựa trên TWO x64
BA dựa trên x64

Vì vậy, One không phải là 64 bit, và hai cái còn lại đều là x64, không cái nào là IA64. 1 Sau đó:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp một, hai, localhost | ft __SERVER, chú thích

Chú thích __SERVER
-------- -------
Một tiêu chuẩn Microsoft® Windows Server® 2008
HAI tiêu chuẩn Microsoft Windows Server 2008 R2
BA Microsoft Windows 7 Ultimate

Vậy One là Win2k8 32bit, Two là Win2k8R2 64bit và Three (localhost) là Win7 64bit.


1 Tôi không có hệ thống IA64 để kiểm tra giá trị của SystemTypetrường sẽ có.


3

Kiến trúc IA64 hoàn toàn khác với kiến ​​trúc x86-64 (còn gọi là AMD64), đó là ý nghĩa của hầu hết mọi người khi họ nói 64-bit. Vì vậy, ngay cả khi có phiên bản Windows 7 tương thích IA64 (như những người khác đã chỉ ra, không có 1 ), nó sẽ yêu cầu bộ xử lý Itanium , bạn sẽ không thể cài đặt nó trên Core 2 Bộ đôi hoặc bất kỳ hệ thống x86-64 nào khác.

Chỉnh sửa: đồng thời, một cách khác để có được kiến ​​trúc bộ xử lý với WMI (từ dấu nhắc lệnh hoặc PS):

wmic CPU get Architecture

CPUlà bí danh cho lớp Win32_Processor và các giá trị có thể 2 là (ý nghĩa trong ngoặc đơn):

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

1 Phiên bản máy khách cuối cùng hỗ trợ IA64 là Windows XP; Windows Server 2008 R2 sẽ là phiên bản máy chủ cuối cùng .
2 Có một vài thứ khác, cho các kiến ​​trúc như MIPS, Alpha và PowerPC, nhưng những thứ đó chủ yếu ở đó vì lý do di sản; xem bài viết MSDN ở trên để biết chi tiết đầy đủ.


@ William.Ebe Một CPU x86-64 tiêu chuẩn, như mong đợi. Vấn đề có thể nằm ở ProtectionID, sau đó. Rất vui vì tôi có thể giúp. Hãy nhớ chấp nhận câu trả lời giúp bạn nhiều nhất bằng cách nhấp vào phác thảo dấu kiểm màu xanh lá cây bên cạnh nó.
Indrek

-1

Mở một cửa sổ Lệnh và chạy như sau:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Liệt kê tất cả các biến sau đó lọc ra một biến không hiệu quả khi bạn đã biết tên. Đơn giản chỉ cần sử dụng biến môi trường trực tiếp, như tôi đã mô tả trong câu trả lời của mình.
Bob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.