Comment trouver mon système d'exploitation Windows est x64 ou ia64?


12

Lorsque je scanne quelques exécutables dans mon répertoire Windows avec ProtectionID , il m'est arrivé de scanner Windows Explorer. Et les résultats sont donnés ci-dessous.

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)

Je sais que mon processeur est Core 2 Duo et son architecture x64 a entraîné un indicateur d'avertissement. Mais le système d'exploitation que j'ai installé est Windows 7 x64. Les résultats ci-dessus me soulèvent une question que mon système d'exploitation est x64 ou IA64? Comment trouver ça?

Mise à jour Dans la dernière version de ProtectionID, ce faux avertissement semble corrigé.


3
Pour autant que je puisse voir, seules les éditions Server de Windows ont une version explicite pour l'architecture Itanium (alias IA64), Win7 64 bits prenant simplement en charge le jeu d'instructions x64 "habituel". Êtes-vous sûr à 100% d'avoir installé la version 64 bits de Windows 7? Et êtes-vous sûr à 100% que votre CPU est définitivement 64 bits (je n'ai pas vérifié si tous les Core 2 Duos l'étaient). Oh, et cela exe fonctionne-t-il (je suppose que sinon vous auriez de sérieux problèmes de système d'exploitation)? Si c'est le cas, je serais douteux que le logiciel reçoive une lecture valide, vérifiez avec autre chose.
DMA57361

Le type de CPU doit être dans la variable d'environnement %PROCESSOR_ARCHITECTURE%, et echo %PROCESSOR_ARCHITECTURE%dans l'invite de commande devrait vous donner AMD64(comme vous dites que vous utilisez un Core 2 Duo). msinfo32.exedevrait également avoir un champ "System Type", qui dit x64-based PCpour moi sur un processeur x86-64. Je ne sais pas comment / pourquoi vous avez un système binaire IA64 ...
Bob

6
Cela ou ProtectionID est cassé.

Quelle version de ProtectionID?
David Schwartz

@ DMA57361 - J'ai Core 2 Duo E7300. J'ai Windows 7 x64 Ultimate. Selon mon taskmgr, environ 40% de mes processus s'exécutent en mode de compatibilité x86, c'est-à-dire avec un suffixe * 32 après le nom de l'image.
Jones

Réponses:


18

Le type de CPU doit être dans la variable d'environnement %PROCESSOR_ARCHITECTURE%, et echo %PROCESSOR_ARCHITECTURE%dans l'invite de commande devrait vous donner AMD64sur un processeur x86-64. msinfo32.exe devrait également avoir un champ "Type de système", qui indique pour moi un PC x64 sur un processeur x86-64. Je ne sais pas comment / pourquoi vous avez un système binaire IA64 ...


Cela semble être un problème avec 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)

Mais dans l'onglet PE Stuff:

Capture d'écran (IMAGE_FILE_MACHINE_AMD64
Cliquez pour agrandir


Naviguer dans le même bateau! De plus, les outils divers -> Outils divers / Infos système -> L'architecture du processeur dit «basé sur Intel (x86)»
Jones

5

Comme premier commentaire sur les notes Q, il n'y a pas de build IA64 de Windows 7. Pour une version IA64, vous devez utiliser le serveur.

Le moyen le plus fiable pour déterminer ces informations est peut-être avec WMI et les classes Win32_OperatingSystem et Win32_ComputerSystem .

Utilisation de PowerShell et de l' gwmialias pour Get-WmiObject:

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

__SERVER systemtype
-------- ----------
UN PC X86
DEUX PC x64
TROIS PC x64

donc l'un n'est pas 64 bits, et les deux autres sont tous les deux x64, aucun n'est IA64. 1 Ensuite:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp un, deux, localhost | ft __SERVER, légende

Légende de __SERVER
-------- -------
ONE Microsoft® Windows Server® 2008 Standard
DEUX Microsoft Windows Server 2008 R2 Standard
TROIS Microsoft Windows 7 Ultimate

Ainsi, un est Win2k8 32 bits, deux est Win2k8R2 64 bits et trois (localhost) est Win7 64 bits.


1 Je n'ai pas de système IA64 pour vérifier la valeur du SystemTypechamp.


3

L'architecture IA64 est complètement différente de l'architecture x86-64 (aka AMD64), ce que la plupart des gens veulent dire quand ils disent 64 bits. Donc, même s'il existait une version compatible IA64 de Windows 7 (qui, comme d'autres l'ont souligné, il n'y en a pas 1 ), elle nécessiterait un processeur Itanium , vous ne seriez pas en mesure de l'installer sur un Core 2 Duo ou tout autre système x86-64.

Edit: aussi, une autre façon d'obtenir l'architecture du processeur avec WMI (à partir de l'invite de commande ou PS):

wmic CPU get Architecture

CPUest un alias pour la classe Win32_Processor , et les valeurs possibles 2 sont (significations entre parenthèses):

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

1 La dernière version client à prendre en charge IA64 était Windows XP; Windows Server 2008 R2 sera la dernière version du serveur .
2 Il y en a quelques autres, pour des architectures comme MIPS, Alpha et PowerPC, mais celles-ci sont principalement là pour des raisons héritées; voir l'article MSDN ci-dessus pour plus de détails.


@ William.Ebe Un processeur x86-64 standard, comme prévu. Le problème réside probablement dans ProtectionID, alors. Heureux d'avoir pu aider. N'oubliez pas d'accepter la réponse qui vous a le plus aidé en cliquant sur la coche verte à côté.
Indrek

-1

Ouvrez une fenêtre de commande et exécutez ce qui suit:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Lister toutes les variables puis en filtrer une n'est pas efficace lorsque vous connaissez déjà le nom. Utilisez simplement la variable d'environnement directement, comme je l'ai décrit dans ma réponse.
Bob
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.