Как найти мою операционную систему Windows 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? Как я могу найти это?

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

Джонс
источник
3
Насколько я вижу, только версии Windows для серверов имеют явную версию для архитектуры Itanium (она же IA64), причем 64-разрядная версия Win7 просто поддерживает «обычный» набор команд 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, тип системы

__SERVER системный тип
-------- ----------
ОДИН ПК на базе X86
ДВА x64 на базе ПК
ТРИ 64-разрядных ПК

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

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp one, two, localhost | ft __SERVER, подпись

__SERVER подпись
-------- -------
ОДИН Microsoft® Windows Server® 2008 Standard
ДВА Microsoft Windows Server 2008 R2 Standard
ТРИ 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 (X 86)
  • 9 (X86-64)
  • 6 (Itanium)

1 Последней версией клиента, поддерживающей IA64, была Windows XP; Windows Server 2008 R2 будет последней версией сервера .
2 Есть несколько других, для архитектур, таких как MIPS, Alpha и PowerPC, но они в основном существуют по устаревшим причинам; см. статью MSDN выше для получения полной информации.

Индрек
источник
@ William.Ebe Стандартный процессор x86-64, как и ожидалось. Проблема, скорее всего, связана с ProtectionID. Рад, что смог помочь. Пожалуйста, не забудьте принять ответ, который вам больше всего помог, нажав на зеленую галочку рядом с ним.
Индрек
-1

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

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

источник
2
Перечисление всех переменных, а затем отфильтровывание одной неэффективно, когда вы уже знаете имя. Просто используйте переменную окружения напрямую, как я описал в своем ответе.
Боб