Cara cepat untuk mengetahui apakah aplikasi yang diinstal 64-bit atau 32-bit

107

Saya punya aplikasi pihak ketiga (dalam hal ini Cognos Data Manager) diinstal pada Windows Server 2003 64-bit.

Apakah ada cara cepat untuk menentukan apakah suatu aplikasi telah dibangun / dikompilasi sebagai aplikasi 64-bit atau sebagai aplikasi 32-bit?

Secara default, sebuah program ingin diinstal dalam Program Files (x86). Saya menduga itu berarti itu adalah versi 32-bit. Saya harus membuatnya untuk berbicara dengan database Oracle dan untuk membuatnya bekerja saya akhirnya menginstalnya kembali di jalur direktori yang tidak memiliki tanda kurung "(" dan ")" di dalamnya, karena hal itu menyebabkan masalah. Saya juga telah menginstal klien Oracle 64-bit dan 32-bit.

Untuk referensi di masa mendatang, saya ingin dapat mengetikkan perintah "xxxx fred.exe" dan minta saya memberi tahu apakah fred.exe akan membutuhkan pengaturan 32-bit atau 64-bit (misalnya sumber data ODBC dll).

Gary
sumber
1
Jika suatu aplikasi terletak di folder File Progam (x86) itu tidak berarti memastikan aplikasi tersebut dikompilasi 64 bit. Ini hanya konvensi yang diikuti sebagian besar penginstal. Misalnya Chrome 64 bit diinstal ke folder x86 (sayangnya).
nawfal

Jawaban:

92

Jika Anda menjalankan aplikasi, di Task Manager seharusnya memiliki * 32 di sampingnya untuk menunjukkan itu 32-bit. Saya cukup yakin mereka menerapkan ini di Server 2003, tidak positif, semoga seseorang dapat mengklarifikasi.

Anda juga bisa menjalankannya melalui PEiD . PEiD tidak mendukung PE 64-bit, sehingga akan tersedak jika 64-bit.

Ada juga file GNU yang terkenal untuk Windows. Ini akan memberi tahu Anda segala macam informasi tentang executable.

Contoh:

$ file winrar-x64-392b1.exe
winrar-x64-392b1.exe: PE32+ executable for MS Windows (GUI)

$ file display.exe
display.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit</pre>

Seperti yang Anda lihat, penginstal WinRAR 64-bit diklasifikasikan sebagai PE32 +, yang menandakan eksekusi 64-bit . Aplikasi 32-bit hanyalah PE32, yang dapat dieksekusi 32-bit.

John T
sumber
1
Terima kasih banyak :)
John T
1
Alternatif untuk Task Manager dapat menjadi Process Explorer, Anda dapat menambahkan kolom Tipe Gambar di sana. Melalui menu Opsi Anda dapat mengganti Task Manager dengan ini jika Anda ingin ... :-)
Tamara Wijsman
Apa yang ditunjukkan oleh file GNU dengan program-program seperti Process Explorer, yang memiliki rintisan 32-bit yang mendeteksi itu berjalan pada sistem 64-bit dan membongkar gambar 64-bit untuk dieksekusi?
afrazier
Unduh dan coba sendiri?
John T
2
Untuk menginstal filedari GnuWin32, unduh 'paket lengkap' (bukan 'binari') dari gnuwin32.sourceforge.net/packages/file.htm
Kolonel Panic
40

Cara termudah, tanpa menginstal program lain atau menjalankan file, cukup klik kanan pada file, pilih Properties , dan kemudian pergi ke tab Compatibility . Jika tidak ada opsi berwarna abu-abu dan mode Windows XP dan 9x ditawarkan, ini 32-bit. Jika ada opsi abu-abu dan Vista adalah mode paling awal yang ditawarkan, itu 64-bit. Tidak perlu memulai aplikasi sama sekali.

Jika aplikasi sudah dimulai, tentu saja Anda masih dapat menggunakan ide * 32 yang disebutkan dalam jawaban lain. Namun, ini tidak tersedia di Windows 8.x dan task manager baru. Untungnya, Anda dapat mengaktifkan kolom Platform dengan mengklik kanan pada header kolom di tab Detail dan memilih kolom Pilih . Kolom akan berisi "32-bit" atau "64-bit" yang sesuai.

trlkly
sumber
Kedengarannya cukup masuk akal.
ArtOfWarfare
1
Ya saya suka yang ini. Saya ingin memeriksa satu file tunggal dan tidak ingin memuat laptop saya penuh omong kosong yang diunduh ...
Gottlieb Notschnabel
Pemberitahuan * 32 tidak tersedia di task manager Windows 8 tetapi memiliki kolom "Platform" yang, secara default, tidak terlihat. Lihat 7tutorials.com/...
Pino
Terima kasih @Pino. Saya tidak pernah punya alasan untuk mengetahuinya ketika saya menggunakan Windows 8. (Saya kembali ke Windows 7 ketika HD saya crash dan saya menyadari saya tidak pernah menggunakan aplikasi W8.) Saya akan memperbarui jawaban saya.
trlkly
25

Jika Anda menginstal Visual Studio atau Platform SDK yang dapat Anda gunakan dumpbin /headersuntuk melihat nilai header PE.

Contoh untuk eksekusi 64-bit:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
            8664 machine (x64)
               5 number of sections
        4987EDCA time date stamp Tue Feb 03 08:10:02 2009
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
              23 characteristics
                   Relocations stripped
                   Executable
                   Application can handle large (>2GB) addresses

OPTIONAL HEADER VALUES
             20B magic # (PE32+)
            8.00 linker version
           2A600 size of code
           18A00 size of initialized data
               0 size of uninitialized data
           2AE90 entry point (000000000042AE90)
            1000 base of code
               ...

Dan untuk 32 bit:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        4B0C786D time date stamp Wed Nov 25 01:21:01 2009
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             103 characteristics
                   Relocations stripped
                   Executable
                   32 bit word machine

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            9.00 linker version
           42000 size of code
            4000 size of initialized data
           6F000 size of uninitialized data
           B0EE0 entry point (004B0EE0)
           70000 base of code
               ...

Nilai pertama di header file memberi tahu Anda arsitektur: 0x14C untuk x86 atau 0x8664 untuk x64.

Joey
sumber
Pendekatan yang menarik dan terperinci, saya benar-benar perlu memulai pemrograman lagi, +1.
John T
18

Jika Anda memiliki program hex editor, cukup buka file Anda dan segera setelah hal-hal intro header standar (seperti "Program ini tidak dapat dijalankan dalam mode DOS ...") Anda akan melihat

"PE..L" (kode hex: 504500004C) = 32 bit

atau

"PE..d †" (kode hex: 504500006486) = 64 bit

Brian Weigand
sumber
Saya menggunakan Total Commander sebagai manajer file saya, jadi bagi saya, ini adalah solusi paling sederhana. Saya cukup menekan F3 untuk melihat awal file dan mendapatkan jawabannya secara instan.
mivk
1
Ew, mereka benar-benar menulis "64" "86" sebagai byte yang dapat dibaca manusia di sana untuk mengindikasikan 64 bit. Bagaimana jelek :)
Nyerguds
@Nyerguds mengapa jelek? itu disebut hexspeak dan cukup umum digunakan, esp. dalam angka ajaib. Misalnya IPv6 dari facebook adalah*:FACE:B00C:*
phuclv
Itu tidak sama sekali. Anda hanya berbicara tentang hex leetspeak. Ini secara harfiah menggunakan angka 100 sebagai makna "64" hanya karena terlihat seperti heksadesimal 6 dan 4.
Nyerguds
@Nyerguds string "6486" dalam hex, yang jelas adalah hexspeak di mana Anda membaca angka hex sebagai karakter. Apa yang salah dengan 0xDEADBEEF ketika Anda menggunakan 0xD untuk D karena sepertinya D? Jika jelek maka BCD juga jelek di mana Anda benar-benar menggunakan angka 100 berarti 64
phuclv
5

teks alternatifExplorer EXE
File Explorer yang Dapat Dieksekusi untuk tipe file OS / 2, NE, PE32, PE32 + dan VxD.

Aplikasi ini didasarkan pada MiTeC Portable Executable Reader . Ia membaca dan menampilkan properti dan struktur file yang dapat dieksekusi. Ini kompatibel dengan jenis file PE32 (Portable Executable), PE32 + (64bit), NE (Windows 3.x New Executable) dan VxD (Windows 9x Virtual Device Driver). Executable .NET juga didukung.

Ini menyebutkan kelas yang diperkenalkan, unit yang digunakan dan formulir untuk file yang dikompilasi oleh kompiler Borland.

Catatan: Muncul dengan GUI dan memungkinkan Anda 'menjelajahi' struktur file biner Windows.
Sayangnya, tampaknya tidak menerima biner target untuk dibuka dari baris perintah. Tetapi detail yang diberikannya mungkin berguna dalam beberapa kasus.

nik
sumber
3

Anda dapat memeriksa menggunakan sigcheck.exebagian mana dari Sysinternals Suite , mis

$ sigcheck.exe some_app.exe

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

C:/Program Files (x86)/Foo App\some_app.exe:
    Verified:   Signed
    Signing date:   14:48 23/12/2015
    Publisher:  X
    Company:    X
    Description:    X
    Product:    Some App
    Prod version:   5.0.0.1241
    File version:   5.0.0.1241
    MachineType:    32-bit
kenorb
sumber
1
Itu juga berfungsi untuk DLL.
user34660
2

Cara sederhana lain adalah dengan menggunakan PESnoop:

C:\> pesnoop photoshop.exe /pe_dh


-------------------------------------------------------------------------------
 PESnoop 2.0 - Advanced PE32/PE32+/COFF OBJ,LIB command line dumper by yoda
-------------------------------------------------------------------------------

Dump of file: photoshop.exe...
Modus:        64bit Portable Executable Image...
...

Satu tempat untuk mendapatkan PESnoop ada di sini: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave

ViperGeek
sumber
2

Dan bagi Anda penggemar GUI, cara termudah mutlak adalah menginstal ekstensi Explorer ini:

http://www.silurian.com/win32/inspect.htm

- Dave

ViperGeek
sumber
"Instalasi gagal". Yay.
ArtOfWarfare
2

Dependency Walker adalah alat GUI yang berguna untuk memverifikasi tidak hanya file exe tetapi juga file DLL. File DLL atau EXE 64 bit akan memiliki ikon 64 kecil di sebelahnya.

bobc
sumber
1
filever /bad *.exe

WAMD64 atau W32i atau W16 akan berada di kolom pertama.

Bob
sumber
1

Jika Anda menjalankan program, Anda dapat menggunakan "Process Monitor" (ProcMon) dari Sysinternal Suite .

Ini portabel dan memberi Anda banyak info tentang proses Anda.

Yucer
sumber
1
Itu mungkin berlebihan.
Synetech