Як знайти мою ОС Windows x64 чи ia64?


12

Коли я сканував декілька виконуваних файлів у своєму каталогу Windows за допомогою ProtectionID , мені трапилось сканувати Провідник 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, що призвело до попереджувального прапора. Але ОС, яку я встановив, - це Windows 7 x64. Наведені вище результати викликають у мене питання про те, що моя ОС x64 або IA64? Як я можу це знайти?

Оновлення В останній збірці ProtectionID це помилкове попередження видається виправленим.


3
Наскільки я бачу, лише серверні версії Windows мають явну версію архітектури Itanium (він же IA64), а Win7 64-бітний просто підтримує "звичайний" набір інструкцій x64. Ви на 100% впевнені, що встановили 64-бітну версію Windows 7? А ви на 100% впевнені, що ваш процесор напевно 64-розрядний (я не перевіряв, чи були всі Core 2 Duos). О, і чи exe працює (я припускаю, що ще у вас виникнуть серйозні проблеми з ОС)? Якщо так, я б сумнівався, що програмному забезпеченню присвоєно читання, перевірте щось інше.
DMA57361

Тип процесора повинен містити змінну оточуючого середовища %PROCESSOR_ARCHITECTURE%, а echo %PROCESSOR_ARCHITECTURE%в командному рядку має бути вказано AMD64(як ви говорите, ви використовуєте Core 2 Duo). msinfo32.exeтакож повинно бути поле "Тип системи", яке говорить x64-based PCдля мене на процесорі x86-64. Я не впевнений, як / чому у вас є бінарна система IA64 ...
Боб

6
Це, або ProtectionID порушено.

Яка версія ProtectionID?
Девід Шварц

@ DMA57361 - У мене Core 2 Duo E7300. У мене Windows 7 x64 Ultimate. Відповідно до мого taskmgr, близько 40% моїх процесів, що працюють у режимі сумісності x86, тобто із суфіксом * 32 після назви зображення.
Джонс

Відповіді:


18

Тип процесора повинен знаходитись у змінній оточення %PROCESSOR_ARCHITECTURE%, а echo %PROCESSOR_ARCHITECTURE%в командному рядку - AMD64на процесорі x86-64. msinfo32.exe також повинен мати поле "Тип системи", в якому йдеться про ПК на базі 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
Клацніть для повного розміру


Плавати в одному човні! Додатково Інші інструменти -> Інше Інструменти / Інформація про систему -> Архітектура процесора говорить "на базі Intel (x86)"
Джонс,

5

Як перший коментар до запитань Q, немає версії IA64 для Windows 7. Для версії IA64 ви повинні використовувати сервер.

Мабуть, найнадійніший спосіб визначити цю інформацію - це WMI та класи Win32_OperatingSystem та Win32_ComputerSystem .

Використання PowerShell та gwmiпсевдоніма для Get-WmiObject:

PS> gwmi win32_computersystem -комп'ютер один, два, localhost | ft __СЕРВЕР, системний тип

__SERVER системний тип
-------- ----------
Один ПК на базі X86
Два ПК на базі x64
ТРИ ПК на базі x64

тож один не 64-бітний, а інші два - x64, жоден не IA64. 1 Потім:

PS [64] E: \ # 12> gwmi win32_operatingsystem -комплект один, два, localhost | ft __SERVER, підпис

__SERVER підпис
-------- -------
ONE Standard Microsoft® Windows Server® 2008 Standard
ДВОЙ стандарт Microsoft Windows Server 2008 R2
ТРИ Microsoft Windows 7 Ultimate

Отже, один - 32-бітний Win2k8, два - 64-бітний Win2k8R2, а три (локальний) - Win7 64-бітний.


1 У мене немає системи IA64, щоб перевірити, яке значення SystemTypeматиме поле.


3

Архітектура IA64 абсолютно відрізняється від архітектури x86-64 (він же AMD64). Це те, що мають на увазі більшість людей, коли вони говорять про 64-бітну. Тож навіть якби була версія IA64, сумісна з IA64 (яка, як зазначають інші, немає 1 ), знадобиться процесор Itanium , ви не зможете встановити її на Core 2 Дует або будь-яка інша система x86-64.

Редагувати: також альтернативний спосіб отримати архітектуру процесора за допомогою WMI (з командного рядка або PS):

wmic CPU get Architecture

CPU- псевдонім для класу Win32_Processor , а можливі значення 2 (значення в дужках):

  • 0 (x86)
  • 9 (x86-64)
  • 6 (Ітаній)

1 Останньою версією клієнта для підтримки IA64 була Windows XP; Windows Server 2008 R2 буде останньою версією сервера .
2 Існує кілька інших архітектур, таких як MIPS, Alpha та PowerPC, але вони здебільшого існують із застарілих причин; див. статтю MSDN вище для отримання детальної інформації.


@ William.Ebe Стандартний процесор x86-64, як очікувалося. Тоді проблема полягає в ProtectionID. Радий, що можу допомогти. Будь ласка, не забудьте прийняти відповідь, яка вам найбільше допомогла, натиснувши на неї зелений прапорець.
Індрек

-1

Відкрийте вікно Command та запустіть наступне:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Перерахування всіх змінних, а потім фільтрація їх не є ефективною, коли ви вже знаєте ім'я. Просто використовуйте змінну середовища безпосередньо, як я описав у своїй відповіді.
Боб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.