Windows işletim sistemimin x64 veya ia64 olduğunu nasıl bulabilirim?


12

ProtectionID ile windows dizinimde birkaç yürütülebilir dosyayı taradığımda, Windows Gezgini'ni taradım. Ve sonuçlar aşağıda verilmiştir.

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)

İşlemcimin Core 2 Duo olduğunu ve uyarı işaretiyle sonuçlanan x64 mimarisini biliyorum. Ancak yüklediğim işletim sistemi Windows 7 x64. Yukarıdaki sonuçlar bana işletim sistemimin x64 veya IA64 olduğu sorusunu getiriyor mu? Bunu nasıl bulabilirim?

Güncelleme ProtectionID'nin son derlemesinde bu yanlış uyarı sabit görünüyor.


3
Görebildiğim kadarıyla sadece Windows Server sürümleri Itanium mimarisi (IA64 olarak da bilinir) için açık bir sürüme sahiptir, Win7 64-bit sadece "olağan" x64 komut setini desteklemektedir. Eğer Are % 100 emin Windows 7'nin 64 bit sürümünü yükledim? Ve CPU'nuzun kesinlikle 64 bit olduğundan % 100 emin misiniz (tüm Core 2 Duos'un olup olmadığını kontrol etmedim). Oh, ve exe iş (işletim sistemi ile ilgili ciddi bir sorun yaşayacağınızı varsayıyorum)? Eğer öyleyse, yazılıma geçerli bir okuma verildiğinden şüpheliyim, başka bir şeyle kontrol edin.
— DMA57361

İşlemci türü ortam değişkeni olmalıdır %PROCESSOR_ARCHITECTURE%ve echo %PROCESSOR_ARCHITECTURE%komut istemine size vermelidir AMD64(eğer bir Core 2 Duo kullandığınız söylemek gibi). bir x86-64 işlemcisinde msinfo32.exeyazan bir "Sistem Türü" alanına sahip olmalıdır x64-based PC. Nasıl / neden bir IA64 sistem ikili programına sahip olduğunuzdan emin değilim ...
— Bob

6
O ya da ProtectionID bozuk.

Hangi ProtectionID sürümü?
— David Schwartz

@ DMA57361 - Core 2 Duo E7300'ü kullandım. Windows 7 x64 Ultimate sürümü var. Benim taskmgr göre, süreçlerimin yaklaşık% 40 x86 uyumluluk modunda çalışan, yani görüntü adından sonra * 32 sonek ile.
— Jones

Yanıtlar:


18

İşlemci türü ortam değişkeni olmalıdır %PROCESSOR_ARCHITECTURE%ve echo %PROCESSOR_ARCHITECTURE%komut istemine sizi vermelidir AMD64bir x86-64 işlemci üzerinde. msinfo32.exe ayrıca bir x86-64 işlemcide benim için x64 tabanlı PC yazan bir "Sistem Türü" alanına sahip olmalıdır. IA64 sistem ikili programına nasıl / neden sahip olduğunuzdan emin değilim ...


ProtectionID ile ilgili bir sorun var gibi görünüyor:

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)

Ancak PE Öğeleri sekmesinde:

Ekran görüntüsü (IMAGE_FILE_MACHINE_AMD64
Büyütmek için tıklayınız


Aynı teknede yelken! Ayrıca Çeşitli Araçlar -> Çeşitli Araçlar / Sistem bilgileri -> İşlemci mimarisi 'Intel (x86) tabanlı' diyor
— Jones

5

Q notlarına ilk yorum olarak, Windows 7'nin IA64 derlemesi yoktur. IA64 sürümü için sunucuyu kullanmalısınız.

Bu bilgiyi belirlemenin belki de en güvenilir yolu WMI ve Win32_OperatingSystem ve Win32_ComputerSystem sınıflarıdır .

PowerShell'i ve gwmitakma adı aşağıdakiler için kullanma Get-WmiObject:

PS> gwmi win32_computersystem -bilgisayar bir, iki, localhost | ft __SERVER, sistem türü

__SERVER sistem türü
-------- ----------
ONE X86 tabanlı PC
İKİ x64 tabanlı PC
ÜÇ x64 tabanlı PC

Yani biri 64bit değil, diğer ikisi x64, hiçbiri IA64 değil. 1 Sonra:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp bir, iki, localhost | ft __SERVER, resim yazısı

__SERVER başlık
-------- -------
ONE Microsoft® Windows Server® 2008 Standardı
İKİ Microsoft Windows Server 2008 R2 Standardı
ÜÇ Microsoft Windows 7 Ultimate

Yani One Win2k8 32bit, Two Win2k8R2 64bit ve Three (localhost) Win7 64bit.


1SystemType Alanın hangi değere sahip olacağını kontrol etmek için bir IA64 sistemim yok.


3

IA64 mimarisi, x86-64 (diğer adıyla AMD64) mimarisinden tamamen farklıdır; bu, çoğu insanın 64 bit derken kastettiği şeydir. Bu nedenle, Windows 7'nin IA64 uyumlu bir sürümü olsa bile (diğer insanların işaret ettiği gibi 1 yoktur ), bir Itanium işlemci gerektirir , bir Core 2'ye kuramazsınız Duo veya başka bir x86-64 sistemi.

Düzenleme: ayrıca, WMI ile işlemci mimarisini almanın alternatif bir yolu (komut isteminden veya PS'den):

wmic CPU get Architecture

CPUWin32_Processor sınıfı için bir takma addır ve olası değerler 2 (parantez içindeki anlamlar) şunlardır:

  • 0 (86)
  • 9 (X86-64)
  • 6 (Itanium)

1 IA64'ü destekleyen son istemci sürümü Windows XP'ydi; Windows Server 2008 R2 son sunucu sürümü olacaktır .
2 MIPS, Alpha ve PowerPC gibi mimariler için birkaç tane daha var, ancak bunlar çoğunlukla eski nedenlerle var; tüm ayrıntılar için yukarıdaki MSDN makalesine bakın.


@ William.Ebe Beklendiği gibi standart bir x86-64 CPU. Sorun büyük olasılıkla ProtectionID'ye aittir. Yardımcı olduğuma sevindim. Lütfen yanındaki yeşil onay işareti anahattını tıklayarak size en çok yardımcı olan yanıtı kabul etmeyi unutmayın.
— Indrek

-1

Bir Komut penceresi açın ve aşağıdakileri çalıştırın:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

2
Tüm değişkenleri listeledikten sonra bir tanesini filtrelemek, adı zaten bildiğinizde verimli değildir. Cevabımda açıkladığım gibi, doğrudan çevre değişkenini kullanın.
— Bob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.