¿Cómo encontrar mi sistema operativo Windows es x64 o ia64?


12

Cuando escaneo algunos ejecutables en mi directorio de Windows con ProtectionID , escaneé el Explorador de Windows. Y los resultados se dan a continuación.

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)

Sé que mi procesador es Core 2 Duo y su arquitectura x64 como resultado de una bandera de advertencia. Pero el sistema operativo que he instalado es Windows 7 x64. Los resultados anteriores me hacen dudar de que mi sistema operativo es x64 o IA64. ¿Cómo puedo encontrar eso?

Actualización En la última versión de ProtectionID, esta advertencia falsa parece corregida.


3
Hasta donde puedo ver, solo las ediciones de Windows de Server tienen una versión explícita para la arquitectura Itanium (también conocida como IA64), con Win7 de 64 bits que solo admite el conjunto de instrucciones x64 "habitual". ¿Está 100% seguro de haber instalado la versión de 64 bits de Windows 7? ¿Y está 100% seguro de que su CPU es definitivamente de 64 bits (no he comprobado si todos los Core 2 Duos eran)? Ah, y ¿ exe funciona (supongo que si no tendrías problemas serios con el sistema operativo)? Si es así, dudo que el software reciba una lectura válida, consulte con otra cosa.
DMA57361

El tipo de CPU debe estar en la variable de entorno %PROCESSOR_ARCHITECTURE%, y echo %PROCESSOR_ARCHITECTURE%en el símbolo del sistema debe darle AMD64(como usted dice que está utilizando un Core 2 Duo). msinfo32.exetambién debe tener un campo "Tipo de sistema", que dice x64-based PCpara mí en un procesador x86-64. No estoy seguro de cómo / por qué tiene un sistema binario IA64 ...
Bob

66
Eso, o ProtectionID está roto.

¿Qué versión de ProtectionID?
David Schwartz

@ DMA57361 - Tengo Core 2 Duo E7300. Tengo Windows 7 x64 Ultimate. Según mi taskmgr, alrededor del 40% de mis procesos se ejecutan en modo de compatibilidad x86, es decir, con un sufijo * 32 después del nombre de la imagen.
Jones

Respuestas:


18

El tipo de CPU debe estar en la variable de entorno %PROCESSOR_ARCHITECTURE%y echo %PROCESSOR_ARCHITECTURE%en el símbolo del sistema debe proporcionarle AMD64un procesador x86-64. msinfo32.exe también debe tener un campo "Tipo de sistema", que dice PC basado en x64 para mí en un procesador x86-64. No estoy seguro de cómo / por qué tiene un sistema binario IA64 ...


Parece ser un problema con 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)

Pero en la pestaña PE Stuff:

Captura de pantalla (IMAGE_FILE_MACHINE_AMD64
Haga clic para tamaño completo


Navegando en el mismo barco! Además, las Herramientas misceláneas -> Herramientas misceláneas / Información del sistema -> La arquitectura del procesador dice 'basado en Intel (x86)'
Jones

5

Como el primer comentario sobre las notas Q, no hay una compilación IA64 de Windows 7. Para una versión IA64 debe usar el servidor.

Quizás la forma más confiable de determinar esta información es con WMI y las clases Win32_OperatingSystem y Win32_ComputerSystem .

Usando PowerShell y el gwmialias para Get-WmiObject:

PS> gwmi win32_computersystem -computadora uno, dos, localhost | ft __SERVER, tipo de sistema

__Servidor tipo de sistema
-------- ----------
UNA PC basada en X86
DOS PC basadas en x64
PC TRES basada en x64

Entonces, uno no es de 64 bits, y los otros dos son ambos x64, ninguno es IA64. 1 entonces:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp uno, dos, localhost | ft __SERVER, subtítulo

__Servidor subtítulo
-------- -------
UNO Microsoft® Windows Server® 2008 Standard
DOS Microsoft Windows Server 2008 R2 Standard
TRES Microsoft Windows 7 Ultimate

Entonces, uno es Win2k8 de 32 bits, dos es Win2k8R2 de 64 bits y tres (localhost) es Win7 de 64 bits.


1 No tengo un sistema IA64 para verificar qué valor SystemTypetendrá el campo.


3

La arquitectura IA64 es completamente diferente de la arquitectura x86-64 (también conocida como AMD64), que es lo que la mayoría de las personas quieren decir cuando dicen 64 bits. Entonces, incluso si hubiera una versión de Windows 7 compatible con IA64 (que, como han señalado otras personas, no hay 1 ), requeriría un procesador Itanium , no podría instalarlo en un Core 2 Duo o cualquier otro sistema x86-64.

Editar: también, una forma alternativa de obtener la arquitectura del procesador con WMI (desde el símbolo del sistema o PS):

wmic CPU get Architecture

CPUes un alias para la clase Win32_Processor , y los posibles valores 2 son (significados entre paréntesis):

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

1 La última versión del cliente que admitió IA64 fue Windows XP; Windows Server 2008 R2 será la última versión del servidor .
2 Hay algunos otros, para arquitecturas como MIPS, Alpha y PowerPC, pero en su mayoría están allí por razones heredadas; Consulte el artículo de MSDN anterior para obtener todos los detalles.


@ William.Ebe Una CPU estándar x86-64, como se esperaba. El problema probablemente radica en ProtectionID, entonces. Me alegro de poder ayudar. Recuerde aceptar la respuesta que más le ayudó haciendo clic en el contorno verde de la marca de verificación junto a él.
Indrek

-1

Abra una ventana de comandos y ejecute lo siguiente:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Listar todas las variables y luego filtrar una no es eficiente cuando ya conoce el nombre. Simplemente use la variable de entorno directamente, como describí en mi respuesta.
Bob
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.