Jak znaleźć mój system operacyjny Windows to x64 lub ia64?

12

Kiedy skanuję kilka plików wykonywalnych w moim katalogu Windows za pomocą ProtectionID , zdarzyło mi się skanować Eksploratora Windows. Wyniki podano poniżej.

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)

Wiem, że moim procesorem jest Core 2 Duo i jego architektura x64, co spowodowało wyświetlenie flagi ostrzegawczej. Ale zainstalowany system operacyjny to Windows 7 x64. Powyższe wyniki powodują pytanie, że mój system operacyjny to x64 lub IA64? Jak mogę to znaleźć?

Aktualizacja W najnowszej wersji ProtectionID to fałszywe ostrzeżenie wydaje się naprawione.

Jones
źródło
3
O ile widzę, tylko wersje serwerowe Windows mają jawną wersję dla architektury Itanium (aka IA64), a Win7 64-bit obsługuje tylko „zwykły” zestaw instrukcji x64. Czy masz 100% pewności, że zainstalowałeś 64-bitową wersję systemu Windows 7? I czy jesteś w 100% pewien, że Twój procesor jest zdecydowanie 64-bitowy (nie sprawdziłem, czy wszystkie Core 2 Duos były). Aha, i czy exe działa (zakładam, że w przeciwnym razie miałbyś poważne problemy z systemem operacyjnym)? Jeśli tak, to wątpię, aby oprogramowanie otrzymało prawidłowy odczyt, sprawdź coś innego.
DMA57361
Typ procesora powinien znajdować się w zmiennej środowiskowej %PROCESSOR_ARCHITECTURE%, aw echo %PROCESSOR_ARCHITECTURE%wierszu polecenia powinien dać AMD64(jak mówisz, że używasz Core 2 Duo). msinfo32.exepowinien również mieć pole „Typ systemu”, które mówi x64-based PCmi o procesorze x86-64. Nie jestem pewien, jak / dlaczego masz system binarny systemu IA64 ...
Bob
6
To lub ProtectionID jest uszkodzony.
Jaka wersja ProtectionID?
David Schwartz
@ DMA57361 - I Core 2 Duo E7300. Mam system Windows 7 x64 Ultimate. Według mojego taskmgr, około 40% moich procesów działających w trybie zgodności z x86, tj. Z sufiksem * 32 po nazwie obrazu.
Jones

Odpowiedzi:

18

Typ procesora powinien znajdować się w zmiennej środowiskowej %PROCESSOR_ARCHITECTURE%, aw echo %PROCESSOR_ARCHITECTURE%wierszu polecenia powinien znajdować AMD64się procesor x86-64. msinfo32.exe powinien również zawierać pole „Typ systemu”, które mówi mi, że komputer z procesorem x64 jest dla mnie procesorem x86-64. Nie jestem pewien jak / dlaczego masz system binarny IA64 ...


Wygląda na to, że jest to problem z 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)

Ale w zakładce Materiały PE:

Zrzut ekranu (IMAGE_FILE_MACHINE_AMD64
Kliknij, aby zobaczyć pełny rozmiar

Kok
źródło
Żeglowanie tą samą łodzią! Dodatkowo Różne Narzędzia -> Różne Narzędzia / Informacje o systemie -> Architektura procesora mówi „Oparte na Intel (x86)”
Jones
5

Jako pierwszy komentarz do uwag Q, nie ma wersji IA64 dla systemu Windows 7. W przypadku wersji IA64 należy użyć serwera.

Być może najbardziej wiarygodnym sposobem na określenie tych informacji jest WMI i klasy Win32_OperatingSystem i Win32_ComputerSystem .

Korzystanie z PowerShell i gwmialiasu do Get-WmiObject:

PS> gwmi win32_computersystem -komputer jeden, dwa, localhost | ft __SERVER, typ systemu

__SERVER typ systemu
-------- ----------
JEDEN komputer oparty na X86
Dwa komputery PC z procesorem x64
TRZY komputer z procesorem x64

więc Jeden nie jest 64-bitowy, a pozostałe dwa to x64, żaden nie jest IA64. 1 Następnie:

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

__SERVER podpis
-------- -------
JEDEN Microsoft® Windows Server® 2008 Standard
DWA Microsoft Windows Server 2008 R2 Standard
TRZY Microsoft Windows 7 Ultimate

Więc jeden to Win2k8 32-bitowy, dwa to Win2k8R2 64-bitowy, a trzeci (localhost) to Win7 64-bitowy.


1 Nie mam systemu IA64, aby sprawdzić, jaką wartość SystemTypebędzie miało pole.

Richard
źródło
3

Architektura IA64 całkowicie różni się od architektury x86-64 (aka AMD64), co większość ludzi ma na myśli, mówiąc 64-bit. Więc nawet gdyby istniała wersja Windows 7 kompatybilna z IA64 (która, jak zauważyli inni, nie ma 1 ), wymagałaby procesora Itanium , nie byłabyś w stanie zainstalować go na Core 2 Duo lub inny system x86-64.

Edycja: również alternatywny sposób uzyskania architektury procesora za pomocą WMI (z wiersza polecenia lub PS):

wmic CPU get Architecture

CPUjest aliasem dla klasy Win32_Processor , a możliwe wartości 2 to (znaczenia w nawiasach):

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

1 Ostatnią wersją klienta obsługującą IA64 był Windows XP; Windows Server 2008 R2 będzie ostatnią wersją serwera .
2 Jest jeszcze kilka innych, dla architektur takich jak MIPS, Alpha i PowerPC, ale są one głównie z powodów starszych; zobacz pełny artykuł MSDN powyżej.

Indrek
źródło
@ William.Ebe Standardowy procesor x86-64, zgodnie z oczekiwaniami. Problem prawdopodobnie leży zatem w ProtectionID. Cieszę się, że mogłem pomóc. Pamiętaj, aby zaakceptować odpowiedź, która najbardziej Ci pomogła, klikając zielony kontur zaznaczenia obok niej.
Indrek
-1

Otwórz okno poleceń i uruchom następujące polecenie:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

źródło
2
Wyświetlanie wszystkich zmiennych, a następnie ich odfiltrowywanie nie jest wydajne, jeśli znasz już nazwę. Po prostu użyj bezpośrednio zmiennej środowiskowej, jak opisałem w mojej odpowiedzi.
Bob