Wie finde ich mein Windows-Betriebssystem ist x64 oder ia64?


11

Wenn ich einige ausführbare Dateien in meinem Windows-Verzeichnis mit ProtectionID scanne , habe ich zufällig den Windows Explorer gescannt. Und die Ergebnisse sind unten angegeben.

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)

Ich weiß, dass mein Prozessor Core 2 Duo und seine x64-Architektur ist, was zu einem Warnflag führte. Aber das Betriebssystem, das ich installiert habe, ist Windows 7 x64. Die obigen Ergebnisse werfen mir die Frage auf, ob mein Betriebssystem x64 oder IA64 ist. Wie kann ich das finden?

Update In der neuesten Version von ProtectionID scheint diese falsche Warnung behoben zu sein.


3
Soweit ich sehen kann, haben nur die Server-Editionen von Windows eine explizite Version für die Itanium-Architektur (auch bekannt als IA64), wobei Win7 64-Bit nur den "üblichen" x64-Befehlssatz unterstützt. Sind Sie zu 100% sicher, dass Sie die 64-Bit-Version von Windows 7 installiert haben? Und sind Sie zu 100% sicher, dass Ihre CPU definitiv 64-Bit ist (ich habe nicht überprüft, ob alle Core 2 Duos vorhanden sind)? Ach ja, und tut der exe Arbeit (Ich gehe davon aus, so sonst würden Sie ernsthaft OS Probleme haben)? Wenn ja, wäre ich zweifelhaft, dass die Software einen gültigen Messwert erhält, überprüfen Sie mit etwas anderem.
DMA57361

Der CPU-Typ sollte sich in der Umgebungsvariablen befinden %PROCESSOR_ARCHITECTURE%und echo %PROCESSOR_ARCHITECTURE%in der Eingabeaufforderung angezeigt werden AMD64(wie Sie sagen, Sie verwenden einen Core 2 Duo). msinfo32.exesollte auch ein Feld "Systemtyp" haben, das x64-based PCfür mich auf einem x86-64-Prozessor steht. Ich bin nicht sicher, wie / warum Sie eine IA64-System-Binärdatei haben ...
Bob

6
Das oder ProtectionID ist kaputt.

Welche Version von ProtectionID?
David Schwartz

@ DMA57361 - Ich habe Core 2 Duo E7300. Ich habe Windows 7 x64 Ultimate. Laut meinem TaskMgr laufen ungefähr 40% meiner Prozesse im x86-Kompatibilitätsmodus, dh mit einem * 32-Suffix nach dem Bildnamen.
Jones

Antworten:


17

Der CPU-Typ sollte sich in der Umgebungsvariablen befinden %PROCESSOR_ARCHITECTURE%und echo %PROCESSOR_ARCHITECTURE%in der Eingabeaufforderung sollte AMD64auf einem x86-64-Prozessor angegeben werden. msinfo32.exe sollte auch ein Feld "Systemtyp" haben, in dem x64-basierter PC für mich auf einem x86-64-Prozessor steht. Ich bin nicht sicher, wie / warum Sie eine IA64-Systembinärdatei haben ...


Es scheint ein Problem mit ProtectionID zu sein:

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)

Aber auf der Registerkarte PE Stuff:

Screenshot (IMAGE_FILE_MACHINE_AMD64
Klicken Sie für die volle Größe


Segeln im selben Boot! Zusätzlich sagt die Misc Tools -> Misc Tools / Systeminfo -> Prozessorarchitektur 'Intel (x86) based'
Jones

5

Als ersten Kommentar zu den Q-Notizen gibt es keinen IA64-Build von Windows 7. Für eine IA64-Version müssen Sie einen Server verwenden.

Der wahrscheinlich zuverlässigste Weg, diese Informationen zu ermitteln, ist WMI und die Klassen Win32_OperatingSystem und Win32_ComputerSystem .

Verwenden von PowerShell und des gwmiAlias ​​für Get-WmiObject:

PS> gwmi win32_computersystem -computer eins, zwei, localhost | ft __SERVER, Systemtyp

__SERVER-Systemtyp
-------- ----------
EIN X86-basierter PC
ZWEI x64-basierte PCs
DREI x64-basierte PCs

Also ist einer nicht 64bit und die anderen beiden sind beide x64, keiner ist IA64. 1 Dann:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp eins, zwei, localhost | ft __SERVER, Bildunterschrift

__SERVER Beschriftung
-------- -------
EIN Microsoft® Windows Server® 2008 Standard
ZWEI Microsoft Windows Server 2008 R2 Standard
DREI Microsoft Windows 7 Ultimate

Eins ist also Win2k8 32bit, zwei ist Win2k8R2 64bit und drei (localhost) ist Win7 64bit.


1 Ich habe kein IA64-System, um zu überprüfen, welchen Wert das SystemTypeFeld haben wird.


3

Die IA64-Architektur unterscheidet sich grundlegend von der x86-64-Architektur (auch bekannt als AMD64), was die meisten Leute meinen, wenn sie 64-Bit sagen. Selbst wenn es eine IA64-kompatible Version von Windows 7 gäbe (die, wie andere bereits erwähnt haben, keine 1 gibt ), wäre ein Itanium-Prozessor erforderlich , den Sie nicht auf einem Core 2 installieren könnten Duo oder ein anderes x86-64-System.

Bearbeiten: auch eine alternative Möglichkeit, die Prozessorarchitektur mit WMI abzurufen (über die Eingabeaufforderung oder PS):

wmic CPU get Architecture

CPUist ein Alias ​​für die Win32_Processor- Klasse, und die möglichen Werte 2 sind (Bedeutungen in Klammern):

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

1 Die letzte Clientversion, die IA64 unterstützt, war Windows XP. Windows Server 2008 R2 ist die letzte Serverversion .
2 Es gibt einige andere für Architekturen wie MIPS, Alpha und PowerPC, aber diese sind meistens aus alten Gründen vorhanden. Ausführliche Informationen finden Sie im obigen MSDN-Artikel.


@ William.Ebe Wie erwartet eine Standard-x86-64-CPU. Das Problem liegt dann wahrscheinlich bei ProtectionID. Froh, dass ich helfen konnte. Bitte denken Sie daran, die Antwort zu akzeptieren, die Ihnen am meisten geholfen hat, indem Sie auf das grüne Häkchen daneben klicken.
Indrek

-1

Öffnen Sie ein Befehlsfenster und führen Sie Folgendes aus:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Das Auflisten aller Variablen und das Herausfiltern einer Variablen ist nicht effizient, wenn Sie den Namen bereits kennen. Verwenden Sie einfach die Umgebungsvariable direkt, wie ich in meiner Antwort beschrieben habe.
Bob
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.