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ş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.