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.
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.%PROCESSOR_ARCHITECTURE%
, awecho %PROCESSOR_ARCHITECTURE%
wierszu polecenia powinien daćAMD64
(jak mówisz, że używasz Core 2 Duo).msinfo32.exe
powinien również mieć pole „Typ systemu”, które mówix64-based PC
mi o procesorze x86-64. Nie jestem pewien, jak / dlaczego masz system binarny systemu IA64 ...Odpowiedzi:
Typ procesora powinien znajdować się w zmiennej środowiskowej
%PROCESSOR_ARCHITECTURE%
, awecho %PROCESSOR_ARCHITECTURE%
wierszu polecenia powinien znajdowaćAMD64
się 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:
Ale w zakładce Materiały PE:
Kliknij, aby zobaczyć pełny rozmiar
źródło
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
gwmi
aliasu doGet-WmiObject
:więc Jeden nie jest 64-bitowy, a pozostałe dwa to x64, żaden nie jest IA64. 1 Następnie:
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ść
SystemType
będzie miało pole.źródło
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):
CPU
jest 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.
źródło
Otwórz okno poleceń i uruchom następujące polecenie:
źródło