11

Когда я сканировал несколько исполняемых файлов в моем каталоге 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? Как я могу найти это?

Обновление В последней сборке ProtectionID это ложное предупреждение кажется исправленным.

4 ответа4

17

Тип процессора должен быть в переменной среды %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
Нажмите для полного размера

5

В качестве первого комментария к заметкам Q нет сборки IA64 для Windows 7. Для версии IA64 вы должны использовать сервер.

Возможно, самый надежный способ определить эту информацию - это WMI и классы Win32_OperatingSystem и Win32_ComputerSystem.

Используя PowerShell и псевдоним gwmi для Get-WmiObject:

PS> gwmi win32_computersystem -computer one,two,localhost| ft __SERVER,systemtype

__SERVER                                          systemtype
--------                                          ----------
ONE                                               X86-based PC
TWO                                               x64-based PC
THREE                                             x64-based PC

поэтому один не 64-битный, а два других x64, ни один не IA64. 1 Тогда:

PS [64] E:\ #12> gwmi win32_operatingsystem -comp one,two,localhost| ft __SERVER,caption

__SERVER                                          caption
--------                                          -------
ONE                                               Microsoft® Windows Server® 2008 Standard
TWO                                               Microsoft Windows Server 2008 R2 Standard
THREE                                             Microsoft Windows 7 Ultimate

Один из них - Win2k8 32bit, два - Win2k8R2 64bit и три (localhost) - Win7 64bit.


1 У меня нет системы IA64, чтобы проверить, какое значение будет иметь поле SystemType .

3

Архитектура IA64 полностью отличается от архитектуры x86-64 (она же AMD64), что большинство людей имеют в виду, когда говорят о 64-битной архитектуре. Таким образом , даже если была IA64-совместимая версия Windows 7 (который, как и другие люди указали, там не один), это потребовало бы 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 выше для получения полной информации.

-1

Откройте командное окно и выполните следующее:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .