Windows'ta bir ikili dosyanın 32 veya 64 bit olup olmadığını kontrol etme?


319

Windows'ta bir ikili bilgisayarın 32 veya 64 bit olup olmadığını denetlemenin kolay bir yolu var mı? Programı 32 bit makineye taşımadan önce kontrol etmem ve muhteşem bir arıza yaşamaya ihtiyacım var.


Bu soru benzer , ancak kontrol etmek için biraz çalışma gerektiriyor.
ST3

3
@Guillaume: Yürütülebilir görüntüler işlem değildir. Görev Yöneticisi sadece süreçleri gösterir.
Kabul edilemez

Yanıtlar:


346

Richard'ın cevabındaki başlık değerlerini inceledikten sonra hızlı, kolay ve sadece bir metin editörü gerektiren bir çözüm buldum. Hatta Windows 'varsayılan notepad.exe işe yarar.

  1. Yürütülebilir dosyayı metin düzenleyicide açın. Open...Windows Open with...çalıştırılabilir dosyalar için bağlam menüsünde seçenek göstermediğinden, editörün iletişim kutusunu sürükleyip bırakmak veya kullanmak zorunda kalabilirsiniz .

  2. İlk oluşumundan sonra yazdırılabilir ilk karakterleri kontrol edin PE. Bu bölüm, en azından bir miktar boşlukla (muhtemelen çok olabilir) çevrelenmiştir, bu yüzden görsel olarak kolayca yapılabilir.

İşte bulacağınız şey:

x86:

PE  L

x64:

PE  d†

Uyarı kelimesi: büyük dosyalar üzerinde varsayılan Not Defteri kullanmak çok yavaş olabilir, bu yüzden bir megabayttan veya daha azından daha büyük dosyalar için kullanmayın. Benim durumumda bir 12 MiB dosyayı görüntülemek için yaklaşık 30 saniye sürdü. Notepad ++, ancak hemen hemen anında çalıştırılabilir 120 MiB görüntüleyebildi.

Bu, herhangi bir ek yazılım yükleyemediğiniz bir makinedeki dosyayı incelemeniz gerektiğinde kullanışlı olabilir.

İlave bilgi:

Kullanılabilir bir HEX Düzenleyiciniz varsa, PE İmza ofseti ofsette bulunur 0x3C. İmzası PE\0\0("P" ve "E" harfleri ve ardından iki boş bayt), ardından Küçük Endian dilinde iki baytlık bir Makine Tipi'dir.

İlgili değerler 0x8664x64 çalıştırılabilir ve 0x14cx86 içindir. Çok daha olası değerler var, ancak muhtemelen bunlardan biriyle hiç karşılaşmayacaksınız veya bu tür yürütülebilir dosyaları Windows PC'nizde çalıştıramayacaksınız.

Makine türlerinin tam listesi, .exe özelliklerinin geri kalanıyla birlikte Microsoft PE ve COFF Belirtimi Makine Türleri bölümünde bulunabilir.


21
Hey, bu oldukça sahte. Ve daha iyisi için, bu aslında davaların büyük çoğunluğu için en hızlı ve en kolay çözüm olarak gözüküyor çünkü :)
Septagram 13:15

4
Not defteri ne zaman nadir örneği notepad ++ yendi. Not Defteri, bu hakkı gösterir, not defterinde, göstermek için kodlama ile uğraşırsınız ama işe yaradı!
zar

2
@CoDEmanX bu seçenek IDE veya JIT'in sizin için seçim yapması anlamına gelir. Daha fazla ayrıntı için bu soruya veya bu blog gönderisine bakın.
Alexander Revo

2
Oy vermeden önce tüm gönderiyi okumak için canınızı sıkmış olsaydınız, kabul edilebilir olsaydı, alabildiğiniz Microsoft PE and COFF Specificationkadar belgelenmiş bir sözleşme olan bağlantının bağlantısını ve PE başlığının tam adresini nasıl bulacağınıza ilişkin talimatları görmüş olacaktınız. herhangi bir .exedosyada. Microsoft'un kendi çalıştırılabilir biçimindeki Microsoft'un resmi özelliklerinden daha güvenilir bir kaynağınız varsa, bunun ne olduğunu bilmek isterim.
Alexander Revo,

6
"MZ" ile başlayan dosyalar için biraz daha ileri bakmanız gerekir. PE1L'yi, "RichMQ _........" den hemen sonra 0x110 ofsetinde buldum.
jnnnnn

120

SDK aracı dumpbin.exeile /headersseçeneğiyle bu bilgiyi, bu iki (Ben anahtar bilgiler için cesur ekledik) karşılaştırmak içerir

PS [64] E: \ # 4> dumpbin / başlıklar C: \ Windows \ system32 \ cmd.exe
Microsoft (R) COFF / PE Damperli Sürüm 10.00.40219.01
Telif Hakkı (C) Microsoft Corporation. Her hakkı saklıdır.


C dosyası dökümü: \ Windows \ system32 \ cmd.exe

PE imzası bulundu

Dosya Türü: EXECUTABLE IMAGE

DOSYA BAŞLIĞI DEĞERLERİ
            8664 makine (x64)
               6 bölüm sayısı
        4CE798E5 zaman tarihi damgası Cts Kas 20 09:46:13 2010
               0 dosya işaretçisi sembol tablosuna
               0 simge sayısı
              İsteğe bağlı başlığın F0 boyutu
              22 karakteristik
                   çalıştırılabilir
                   Uygulama büyük (> 2GB) adresleri yönetebilir
[...]

ve

PS [64] E: \ # 5> dumpbin / başlıklar C: \ Windows \ syswow64 \ cmd.exe
Microsoft (R) COFF / PE Damperli Sürüm 10.00.40219.01
Telif Hakkı (C) Microsoft Corporation. Her hakkı saklıdır.


C dosyası dökümü: \ Windows \ syswow64 \ cmd.exe

PE imzası bulundu

Dosya Türü: EXECUTABLE IMAGE

DOSYA BAŞLIĞI DEĞERLERİ
             14C makine (x86)
               4 bölüm sayısı
        4CE78E2B zaman tarihi damgası Cts Kas 20 09:00:27 2010
               0 dosya işaretçisi sembol tablosuna
               0 simge sayısı
              İsteğe bağlı başlığın E0 boyutu
             102 karakteristik
                   çalıştırılabilir
                   32 bit kelime makinesi
[...]

1
Ayrıca 64bit Itanium exe için (IA64) görebilirsiniz.
Darryl Braaten

21
i süper başka bir yerde okumak gibi kullanarak dumpbin /headers | findstr "machine"büyük ölçüde QA ... aradığını sunumunu kolaylaştırır
user1055604

3
Dumpbin.exe burada yer almaktadır:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
Devid,

3
@David: zorunlu değil (VS'nin farklı sürümü, varsayılan yükleme konumunu kullanmıyor, Windows SDK'nın sürümünü kullanarak): bu yüzden belirtmedim.
Richard,

6
Visual Studio komut satırından başlattığınızda, dumpbin kullanmak en kolay yöntemdir: stackoverflow.com/a/477389/1390430
Ben

46

Tüm Windows SDK veya Visual Studio'ya sahip değilseniz veya istemiyorsanız, sigcheck.exeSysInternals'tan kullanabilirsiniz :

sigcheck.exe C:\Windows\Notepad.exe

Çıktı:

Sigcheck v2.1 - File version and signature viewer
Copyright (C) 2004-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\windows\notepad.exe:
    Verified:       Signed
    Signing date:   8:59 AM 8/22/2013
    Publisher:      Microsoft Windows
    Description:    Notepad
    Product:        Microsoft« Windows« Operating System
    Prod version:   6.3.9600.16384
    File version:   6.3.9600.16384 (winblue_rtm.130821-1623)
    MachineType:    64-bit

4
Her zaman doğru gibi görünmüyor: LinqPad.exe (AnyCPU-64bit sürümü) ile kullanmaya çalışın ve Sigcheck size "32 bit" olduğunu söyleyecektir ...
Matt

@Matt ilginç. LinqPad bir .net uygulaması gibi geliyor; Sigcheck'in yalnızca yerel yürütülebilir dosyalarda düzgün çalışıp çalışmadığını merak ediyorum (bu amaçla).
briantist

2
Evet, bir .NET uygulaması. .NET'te önceden derlenmiş değilse, "x86" veya "AnyCPU" yu hedefleyebilirsiniz. "x86" her zaman 32 bit olarak çalışır, ancak AnyCPU 64 bit sistemde 64 bit, ancak 32 bit sistemde 32 bit olarak çalışır. SigCheck bunu düşünmeli ve en az ".NET 32 bit veya 64 bit (AnyCPU)" göstermelidir. Örneğin ILSpy bu durumda "Architecture: AnyCPU (64-bit tercih edilir)" - diyor - ancak ILSpy, non -NET EXE'ler için çalışmaz.
Matt

1
Bu durum, Windows olmayan ("DOS") işletim sistemi için yalnızca "Bu uygulama Microsoft Windows gerektiriyor" diyen işletim sistemi için var olan eski "MZ" başlığı gibi olabilir ... ;-)
Mat

2
Evet, eski zamanlar, kabuğun içinde bir DOS hata ayıklayıcısına sahip oldunuz ve kodu söküp (sadece bir tane bu DOS mesajını içeren bir DOS çağrısı içeriyordu) ... ve metni "Cevap 42." İle değiştirebildiniz. :-D
Matt

38

fileYardımcı programın (örneğin, cygwin'den) 32-64 bitlik çalıştırılabilirler arasında ayrım yapabileceğini onaylayabilirim . Aşağıdaki gibi görünürler:

32.exe: PE32 executable (GUI) Intel 80386, for MS Windows
64.exe: PE32+ executable (console) x86-64, for MS Windows

Gördüğünüz gibi hangisi çok açık. Ek olarak, konsol ile GUI çalıştırılabilirleri arasında ayrım yapar, hangisinin hangisi olduğu açıktır.


1
Bu çözüm msysgit kuran geliştiriciler için oldukça yaygındır.
FrontierPsycho

Neden Windows'da çalıştırılabilir dosyalar MZyerine var PE?
BattleTested

Cygwin'e ihtiyacınız yoksa, GNU yardımcı programlarının bireysel ikili dosyalar olarak alınabileceğini not etmek gerekir. gnuwin32.sourceforge.net/packages/file.htm
MJ Walsh

32

Basit bir yöntem, onu çalıştırmak (buna güvendiğini varsayarak) çalıştırmak ve görev yöneticisindeki süreç sekmesine bakmaktır. 32bit işlemler işlem adının sonunda "* 32" gösterecektir. Bilgisayarınızda çalışmaya istekli olduğunuz bir şey değilse, EXE Gezgini'ni deneyebilirsiniz . 32 veya 64bit olup olmadığına dair çalıştırılabilir bilgiler hakkında bir sürü bilgi gösterecektir.


8
Ne yazık ki, bu yürütülebilir dosyayı çalıştırmanızı gerektirir. Belki de programın çalışmasını neden çalışmadığına dair bir sorun giderme yöntemi olarak kontrol etmeniz gerekir.
Mike Christiansen

6
Nasıl mı sen bir DLL çalıştırmak?
user34660


1
Mesajda olması gereken @ samusarin.
user34660

@ user34660 Teknik olarak haklısınız, bir DLL bir maingiriş noktasına sahip değil ve bu yüzden tek başına bir işlem olarak yürütülmeyecek. Yüklendiğinde çağrılan ancak "ana" olmayan bir başlatma işlevi vardır.
samis

24

Birçok kişi mükemmel 7-zip yüklü ve kendi 7-Zip klasörü ekledi PATH. 7-zip, MSI dosyaları ve PE çalıştırılabilir dosyaları gibi ZIP ve RAR dışındaki dosya biçimlerini anlar. Sadece 7z.exePE dosyasındaki (Exe veya DLL) komut satırını kullanın :

7z l some.exe | more
7z l some.exe | findstr CPU

Çıktı aşağıdaki gibi satırları da içerecektir, CPUsatırın okunmasıyla x86veya x64burada ne istenirse:

Path = C:\Extra\AV\neroAacEnc.exe
Type = PE
CPU = x86
Characteristics = Executable 32-bit

Path = C:\Extra\AV\LAME\lame_enc.dll
Type = PE
CPU = x86
Characteristics = Executable DLL 32-bit

Path = C:\Extra\AV\FFmpeg\bin\ffmpeg.exe
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable LargeAddress NoRelocs NoLineNums NoLocalSyms NoDebugInfo

Path = C:\Extra\AV\FFmpeg\bin\avcodec-56.dll
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable DLL LargeAddress NoLineNums NoLocalSyms NoDebugInfo

vay ben 7z bunu yapabilir biliyordum. Muhtemelen içinde bir fileuygulama içeriyor mu?
phuclv

17

Process Explorer'ın 64-bit sürümü size söyleyebilir. Çalıştırılabilir dosyayı çalıştırın ve işlemin özellikler penceresini açın. Ana sekmede "Image: 32 Bit" veya "Image: 64 Bit" yazan bir giriş var.

görüntü tanımını buraya girin


23
Simply run the executablePeki ya programı çalıştırmak istemiyorsan ?
Synetech

3
@ Synetech Orijinal soru, durum böyle değildir anlamına gelmez.
Andrew Lambert,

Yürütülebilir çok hızlı çıkmadığı sürece, bu benim için en kolay yöntem.
starbeamrainbowlabs

7
Nasıl mı sen bir DLL çalıştırmak?
user34660


12

Bir çalıştırılabilir çalıştırma ve işlem gezginini veya benzeri bir aracı kontrol etme yönteminin bazı belirgin dezavantajları vardır:

  1. İşlemi yürütmeliyiz.
  2. Kısa süren süreçler için (yankı merhaba dünya türleri gibi), süreç gezgini yeni bir sürecin başladığını bile kaydetmemiş olabilir.

Dumpbin.exe yöntemi muhtemelen amacı çözebilir.

Başka bir alternatif cygwin'in dosya komutunu kullanmak olacaktır . Ancak, pencerelerde test etmedim. Linux'larda iyi çalışıyor.

Usage: file program_under_test.exe

EDIT: Sadece pencerede file.exe test etti. iyi çalışıyor. :)


1
Sadece Dracs'in yönteminin pek yardımcı olmayacağı bazı durumlar olduğunu söylemek istedim.
anishsane

3
>> Bu, yine de yazarın kaçınmak istediği programı çalıştırmayı gerektirir: Hayır .. biz de çalıştırıyoruz: file.exe program_under_test.exe
anishsane 19:12 '

1
cygwinPaketin tamamını kurmaktan kaçınmak isteyenler gnuwin32 filepaketini alabilirler .
Bob

6
@ anishsane Tamamen yanlış. filebasitçe diskteki verileri ikili formatta okur ve onları tanımlayan herhangi bir sihirli sayıyı kontrol eder ve bir veritabanını karşılaştırır. Windows'un 32-bit programları PE32 ve hem 64-bit hem de .NET programları PE32 + olarak geldi. Kendisinin bitliği filekesinlikle sıfır fark yaratır - hem 32 bit hem de 64 bit uygulamalar diskten verileri okuyabilir, bu da ihtiyaç duyduğu şeydir.
Bob

1
@MarcH Ha! Yani bir ilginç. Bunun .NET çalışma zamanı saplamasının 32 bit olduğu anlamına geldiğini tahmin ediyorum. Böylece, saniyenin bir kısmı için 32 bitlik bir işlem gerçekleştirir, ancak tüm bu işlem yerel bir 64 bitlik işlem oluşturan .NET çalışma zamanını başlatır.
clacke

10

İşte bir Powershell çözümü, dış bağımlılıklar veya başka bir şey yok. Powershell'i açın, işlevi oraya yapıştırın (isteme geri dönebilmeniz için iki kez Enter tuşuna basın), sonra işlevi aşağıdaki örneklerde yaptığım gibi kullanın:

function Test-is64Bit {
    param($FilePath=“$env:windir\notepad.exe”)

    [int32]$MACHINE_OFFSET = 4
    [int32]$PE_POINTER_OFFSET = 60

    [byte[]]$data = New-Object -TypeName System.Byte[] -ArgumentList 4096
    $stream = New-Object -TypeName System.IO.FileStream -ArgumentList ($FilePath, 'Open', 'Read')
    $stream.Read($data, 0, 4096) | Out-Null

    [int32]$PE_HEADER_ADDR = [System.BitConverter]::ToInt32($data, $PE_POINTER_OFFSET)
    [int32]$machineUint = [System.BitConverter]::ToUInt16($data, $PE_HEADER_ADDR + $MACHINE_OFFSET)
    $stream.Close()

    $result = "" | select FilePath, FileType, Is64Bit
    $result.FilePath = $FilePath
    $result.Is64Bit = $false

    switch ($machineUint) 
    {
        0      { $result.FileType = 'Native' }
        0x014c { $result.FileType = 'x86' }
        0x0200 { $result.FileType = 'Itanium' }
        0x8664 { $result.FileType = 'x64'; $result.is64Bit = $true; }
    }

    $result
}

İşte örnek çıktı:

D:\> Test-is64bit

FilePath               FileType Is64Bit
--------               -------- -------
C:\Windows\notepad.exe x64         True


D:\> Test-is64bit 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'

FilePath                                           FileType Is64Bit
--------                                           -------- -------
C:\Program Files (x86)\Mozilla Firefox\firefox.exe x86        False

Slickness. Yukarıdaki komut dosyası açık bir referans bırakıyor gibi görünüyor. Powershell'i ilk kapatana kadar inşa edilemedi (DLL dosyasını \ bin'de sorgulamak için komut dosyası koştum).
samis

1
Çok havalı. +1. Itanium kesinlikle 64bit olsa :)
Rich Homolka

@ samusarin: belki kapanıştan $stream.dispose();sonra ekleyebilirim ? Dosya tanıtıcıları serbest bırakmalı. ( stackoverflow.com/questions/1999858/… )
Yorik


6

Örneğin, 32 bit olarak işaretlenen bir yürütülebilir dosya bile, 64 bit olarak çalışabilir, örneğin 32 veya 64 bit olarak çalışabilen bir .NET yürütülebilir dosyası olabilir. Daha fazla bilgi için bkz. Https://stackoverflow.com/questions/3782191/how-do-i-determine-if-a-net-application-is-32-or-64-bit . CORFLAGS yardımcı programı, bir .NET uygulamasının nasıl çalışacağını belirlemek için kullanılabilir.

CORFLAGS.EXE çıktısı

32 bit çalıştırılabilir için:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x3
ILONLY    : 1
32BITREQ  : 1
32BITPREF : 0
Signed    : 0

64 bit çalıştırılabilir için:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32+
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

32 veya 64 bit olarak çalışabilen ve mümkün olduğunda 64 bit olarak çalışabilen yürütülebilir dosyalar için:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

32 veya 64 bit olarak çalışabilen ancak 64 bit bir işleme yüklenmedikçe 32 bit olarak çalışabilen yürütülebilir dosyalar için:

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0

Cool komutu, ancak yerel (yönetilmeyen) çalıştırılabilirler / borçlar için işe yaramaz. ( corflags : error CF008 : The specified file does not have a valid managed header)
Tomasz Gandor

@TomaszGandor Evet, bu cevabın içeriği yalnızca kod tarafından yönetildi. Yönetilmeyen kod diğer cevaplar tarafından cevaplanır. Bildiğim kadarıyla, yalnızca yönetilen kod hem 32 hem de 64 bit olarak yürütme arasında geçiş yapabilir.
BlueMonkMN


3

Windows 7 üzerindeyseniz, bir Windows Gezgini'nde, yürütülebilir dosyayı sağ tıklayın ve Özellikler öğesini seçin. Özellikler penceresinde Uyumluluk sekmesini seçin. Uyumluluk Modu bölümünde Windows XP görüyorsanız, bu bir 32 bit çalıştırılabilir. Windows Vista'yı görürseniz, 64 bit.


-1 hiç doğru değil. Çeşitli 32 ve 64 bit ikililerin hepsinin Uyumluluk Modu gösteriliyorWindows 8
Peter Hahndorf

@Peter Windows 7'de epeyce denedim ve her zaman benim için çalıştı. Varsayılan uyumluluk modunun Windows 8 olduğu bir ikili örnek verebilir misiniz? Ayrıca hangi Windows'dasınız? Teşekkürler.
axxis

Server 2012 R2'deyim ve birkaç rasgele ikili dosyayı denedim. Bazı 32 bit olanları gösterir, Windows XP SP2bazıları ise Vistaveya olarak gösterir Windows 8. Yani bu yöntem doğru değil.
Peter Hahndorf

3

Bağlam menünüze 32/64 bit testi nasıl eklenir

Exetest.reg adlı ve bu kodu içeren bir metin dosyası oluşturun :

Windows Registry Editor Version 5.00

; What will appear in the contextual menu when right-clicking on a .exe file
[HKEY_CLASSES_ROOT\exefile\shell\command32_64]
@="32/64 bit test"

; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
@="\"c:\\temp\\x86TestStart.bat\" \"%1\""

x86TestStart.batSadece bu kod satırını içeren bir metin dosyası oluşturun ve C: \ temp içine kaydedin:

c:\temp\x86or64.vbs %1

x86or64.vbsBu kodu içeren bir metin dosyası oluşturun ve C: \ temp: içine kaydedin.

rem Reading binary file in VBScript: http://stackoverflow.com/questions/21249440/modify-first-two-bytes-of-a-file-using-vbscript
rem Info on executables: https://dmoj.ca/problem/exe

rem x86/64 signature is located dinamycally; its position is addressed
rem from bytes in 0x3C-0x3D position.

rem Possible signatures;
rem "PE..L" (hex code: 50.45.00.00.4C) = 32 bit
rem "PE..d†" (hex code: 50.45.00.00.64.86) = 64 bit

' ------------------------------------
' Source code by Jumpkack 2015
' ------------------------------------

' Read all arguments from command line:
Set args = Wscript.Arguments

' Store first argument (full path to file)
FileName = args(0)

' Find address of executable signature:
FirstChars = readBinary(FileName)
FirstChars = FirstChars
Addr1 = asc(mid(FirstChars,61,1))
Addr2 = asc(mid(FirstChars,62,1))
AddrFinal = Addr2*256 + Addr1 + 1

' Check signature:
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "4C" then Wscript.Echo Filename & " is a 32 bit executable."
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "64" then Wscript.Echo Filename & " is a 64 bit executable."


Function readBinary(path)
    Dim a, fso, file, i, ts
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.getFile(path)
    If isNull(file) Then
        wscript.echo "File not found: " & path
        Exit Function
    End If
    Set ts = file.OpenAsTextStream()
    'a = makeArray(file.size)
    a=""
    i = 0
    While (Not ts.atEndOfStream) and (i<60000)
       'a(i) = ts.read(1)
       a = a + ts.read(1)
       i = i + 1
    Wend
    ts.close
    readBinary = a
 End Function

Exetest.reg dosyasına çift tıklayın: Windows kayıt defterine yeni bir anahtar eklenecektir:

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

Çalıştırılabilir bir dosyaya sağ tıklandığında içerik menüsünde " 32/64 bit testi " olarak görünecektir .

Öğeye tıklamak, exe imzasını okuyan ve sonucu gösteren c:\\temp\\x86TestStart.bat\VBscript dosyasını başlatan bir toplu iş dosyası başlatılmasına x86or64.vbsneden olur.

Kayıt defterinde değişiklik yapmak istemiyorsanız veya değiştirmek istemiyorsanız, .vbs dosyasını QuickLaunch çubuğuna kopyalayın ve yürütülebilir dosyayı üzerine sürükleyin.


3

Benim iki kuruş bağımlılık yürüteç sadece indirme ve yürütülebilir dosya birinde mimarisinin ne için kullanıldığını kontrol edin.

Bu nasıl kullanılır:

Sadece basitçe uygulamayı indirin, başlatın, açık simgesine tıklayın → bir * .exe dosyası bulun → seçin ve altta yansıma taraması yapıldıktan sonra, bir sütunun içinde "mimari" ayrıntılarının bulunduğu verileri içeren bir ızgara göreceksiniz (x86, x64)

Çalıştırılabilir dosyayı açın ve yapı mimarisini görün

bağımlılık yürüteç ekran görüntüsü


1

Bunu belirtilen görmedim. Bu bilgiyi size sağlayabilen NTCore tarafından CFF Explorer adlı bir PE görüntüleme programı var . Taşınabilir olarak indirilebilir ve çalıştırılabilir, ancak isterseniz de yükleyebilirsiniz.

İkililere ( .exe, .dllvb.) Sağ tıklayın ve "CFF Explorer ile aç" seçeneğini seçin. Nt Başlıklarına Git -> Dosya Başlığı -> "Özellikler" alanında "buraya tıklayın"

32bit bir program ise, "32 bit word machine" onay kutusu işaretlenecektir. Örneğin, aşağıdaki resimde gördüğünüz gibi Notbit ++ programının 32bit sürümünü kurdum. Aksi takdirde, 64bit.

görüntü tanımını buraya girin


CFF explorer ile daha hızlı bir yol var: bir dosyayı yüklerken hemen "dosya türü" altında "Taşınabilir Yürütülebilir 64" veya "Taşınabilir Yürütülebilir 32" 'ye
sahipsiniz

0
  • uygulamayı çalıştır
  • Görev Yöneticisi'ni açın
  • sağ tıklayın ve döküm dosyasını oluşturun
  • not alma yolu
  • yola gidin ve .DMPdökümü Visual Studio'da açın
  • orada tüm detayları anladın
  • süreç mimarisini kontrol edin:

3
Bu cevabın uygulamayı çalıştırmak için gerekli olduğunu vurgulamak zorunda olduğumu hissediyorum. Önceki yorum yapanlar bunun istenmeyen olabileceğini öne sürdüler. Ayrıca, Visual Studio otomatik olarak tüm Windows platformlarında kullanılamayacak.
G-Man

0

benim iki kuruş: bir C ++ geliştiricisi olarak, bağımlılık yürüteç ( http://www.dependencywalker.com/ ) çok bilgi vericidir, sadece 64/32 bit görüntülememekle kalmaz, aynı zamanda dahil olan her Dll'yi gösterir: görüntü tanımını buraya girin

Her dosya adının solunda 64 tane görebilirsiniz ...


1
Ekran görüntüsü yanıtı görüntülemiyor - 32bit vs 64bit info ...
TomEus

0

Ancak WSL 'ın filekomuta ölçüde çalışır.

file /mnt/c/p/bin/rg.exe çıktı:

/mnt/c/p/bin/rg.exe: PE32+ executable (console) x86-64, for MS Windows

file /mnt/c/p/bin/u.exe çıktı:

/mnt/c/p/bin/u.exe: PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed

0

Windows 10 görev yöneticisindeki platform sütunu

Windows 7'de bir platform sütunu yoktur. Yani Windows 7 görev yöneticisi göstermiyor.

Windows 10'da artık sütun seçmek artık “görünüm” altında değil. Windows 10'da, ayrıntılar sekmesinde, sütun başlığına sağ tıklayın ve ardından 'sütunları seçin'. Ardından 'platform' kutusunu işaretleyin.

görüntü tanımını buraya girin

görüntü tanımını buraya girin

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.