วิธีที่รวดเร็วในการบอกว่าแอปพลิเคชันที่ติดตั้งนั้นเป็น 64 บิตหรือ 32 บิต


107

ฉันมีแอปพลิเคชันบุคคลที่สาม (ในกรณีนี้คือ Cognos Data Manager) ติดตั้งบน Windows Server 2003 64 บิต

มีวิธีที่รวดเร็วในการตรวจสอบว่าแอปพลิเคชันได้รับการสร้าง / คอมไพล์เป็นแอปพลิเคชัน 64 บิตหรือเป็นแอปพลิเคชัน 32 บิตหรือไม่

โดยค่าเริ่มต้นโปรแกรมต้องการที่จะติดตั้งใน Program Files (x86) ฉันเดาว่านั่นเป็นรุ่น 32 บิต ฉันต้องให้มันพูดคุยกับฐานข้อมูล Oracle และเพื่อให้ได้งานนั้นฉันก็ติดตั้งใหม่ในเส้นทางไดเรกทอรีที่ไม่มีวงเล็บ "(" และ ")" อยู่ในนั้นเพราะมันทำให้เกิดปัญหา ฉันได้ติดตั้งไคลเอ็นต์ Oracle ทั้งแบบ 64 บิตและ 32 บิตแล้ว

สำหรับการอ้างอิงในอนาคตฉันต้องการที่จะพิมพ์คำสั่ง "xxxx fred.exe" และบอกให้ฉันทราบว่า fred.exe จะต้องติดตั้งแบบ 32 บิตหรือ 64 บิต (เช่นแหล่งข้อมูล ODBC เป็นต้น)


1
หากแอปอยู่ในโฟลเดอร์ Progam Files (x86) แอปจะไม่ได้รับการตรวจสอบว่าแอปนั้นรวบรวม 64 บิต มันเป็นเพียงแค่การติดตั้งตามแบบแผน สำหรับเช่น Chrome 64 บิตได้รับการติดตั้งในโฟลเดอร์ x86 (น่าเศร้า)
nawfal

คำตอบ:


92

หากคุณเรียกใช้แอปพลิเคชันในตัวจัดการงานควรมี * 32 ข้างเพื่อระบุว่าเป็น 32- บิต ฉันค่อนข้างแน่ใจว่าพวกเขานำสิ่งนี้ไปใช้ใน Server 2003 ซึ่งไม่ใช่เชิงบวก

นอกจากนี้คุณยังสามารถเรียกใช้ผ่านPEiD PEiD ไม่รองรับ PE 64- บิตดังนั้นมันจะทำให้หายใจไม่ออกถ้าเป็น 64- บิต

นอกจากนี้ยังมีไฟล์ GNU ที่มีชื่อเสียงสำหรับ Windows มันจะบอกคุณทุกประเภทของข้อมูลเกี่ยวกับการปฏิบัติการ

ตัวอย่าง:

$ 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>

ที่คุณสามารถดู, 64 บิตติดตั้ง WinRAR จัดเป็น PE32 + ซึ่งหมายถึงปฏิบัติการ 64 บิต แอปพลิเคชั่น 32 บิตเป็นเพียง PE32 ซึ่งเป็นไฟล์ปฏิบัติการแบบ 32 บิต


1
ยินดีต้อนรับคุณมาก :)
จอห์น T

1
ทางเลือกอื่นที่ Task Manager อาจเป็น Process Explorer คุณสามารถเพิ่มคอลัมน์ประเภทรูปภาพได้ ผ่านเมนูตัวเลือกคุณสามารถแทนที่ตัวจัดการงานได้ด้วยวิธีนี้หากคุณต้องการ ... :-)
Tamara Wijsman

ไฟล์ GNU แสดงอะไรกับโปรแกรมเช่น Process Explorer ซึ่งมีส่วน 32- บิตที่ตรวจพบว่ามันทำงานบนระบบ 64- บิตและคลายอิมเมจ 64- บิตเพื่อดำเนินการ
afrazier

ดาวน์โหลดและลองด้วยตัวคุณเอง?
John T

2
หากต้องการติดตั้งfileจาก GnuWin32 ให้ดาวน์โหลด 'Complete package' (แทนที่จะเป็น 'ไบนารี') จากgnuwin32.sourceforge.net/packages/file.htm
Colonel Panic

40

วิธีที่ง่ายที่สุดโดยไม่ต้องติดตั้งโปรแกรมอื่นหรือเรียกใช้ไฟล์เพียงคลิกขวาที่ไฟล์เลือกคุณสมบัติแล้วไปที่แท็บความเข้ากันได้ หากไม่มีตัวเลือก greyed out และมีโหมด Windows XP และ 9x แสดงว่าเป็นแบบ 32 บิต หากมีตัวเลือก greyed out และ Vista เป็นโหมดแรกสุดที่เสนอก็คือ 64- บิต ไม่จำเป็นต้องเริ่มโปรแกรมเลย

หากแอปพลิเคชั่นเริ่มทำงานแล้วคุณสามารถใช้ความคิด * 32 ที่กล่าวถึงในคำตอบอื่น ๆ ได้ อย่างไรก็ตามไม่สามารถใช้งานได้ใน Windows 8.x และตัวจัดการงานใหม่ โชคดีที่คุณสามารถเปิดใช้แพลตฟอร์มคอลัมน์โดยการคลิกขวาบนส่วนหัวของคอลัมน์ในรายละเอียดแท็บเลือกเลือกคอลัมน์ คอลัมน์จะมี "32- บิต" หรือ "64- บิต" ตามความเหมาะสม


ฟังดูสมเหตุสมผลพอสมควร
ArtOfWarfare

1
ใช่ฉันชอบอันนี้ ฉันต้องการตรวจสอบไฟล์เดียวและไม่ต้องการโหลดแล็ปท็อปของฉันเต็มไปด้วยอึดาวน์โหลด ...
Gottlieb Notschnabel

การแจ้งเตือน * 32 ไม่พร้อมใช้งานในตัวจัดการงานของ Windows 8 แต่มีคอลัมน์ "แพลตฟอร์ม" ซึ่งตามค่าเริ่มต้นจะไม่ปรากฏให้เห็น ดู7tutorials.com/…
Pino

ขอบคุณ @Pino ฉันไม่เคยมีเหตุผลใดที่จะเข้าใจในขณะที่ฉันใช้ Windows 8 (ฉันกลับไปที่ Windows 7 เมื่อ HD ของฉันล้มเหลวและฉันรู้ว่าฉันไม่เคยใช้แอพ W8 ใด ๆ ) ฉันจะอัปเดตคำตอบของฉัน
trlkly

25

ถ้าคุณมี Visual Studio หรือ Platform SDK ที่ติดตั้งคุณสามารถใช้dumpbin /headersเพื่อดูค่า PE header

ตัวอย่างสำหรับการปฏิบัติการ 64 บิต:

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

และสำหรับ 32 บิต:

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

ค่าแรกในส่วนหัวของไฟล์จะบอกสถาปัตยกรรม: 0x14C สำหรับ x86 หรือ 0x8664 สำหรับ x64


วิธีการที่น่าสนใจและมีรายละเอียดฉันต้องเริ่มเขียนโปรแกรมใหม่อีกครั้ง +1
John T

18

หากคุณมีโปรแกรมแก้ไขฐานสิบหกเพียงแค่เปิดไฟล์ของคุณและไม่นานหลังจากสิ่งอินโทรส่วนหัวมาตรฐาน (เช่น "โปรแกรมนี้ไม่สามารถทำงานในโหมด DOS ... ") คุณจะเห็น

"PE..L" (รหัสฐานสิบหก: 504500004C) = 32 บิต

หรือ

"PE..d †" (รหัสฐานสิบหก: 504500006486) = 64 บิต


ฉันใช้ Total Commander เป็นตัวจัดการไฟล์ของฉันดังนั้นสำหรับฉันนี่เป็นทางออกที่ง่ายที่สุด ฉันสามารถกด F3 เพื่อดูจุดเริ่มต้นของไฟล์และรับคำตอบได้ทันที
mivk

1
ใช่พวกเขาเขียน "64" "86" เป็นไบต์ที่มนุษย์สามารถอ่านได้เพื่อระบุ 64 บิต ช่างน่าเกลียด
เหลือเกิน

@ Nyerguds ทำไมน่าเกลียด? มันเรียกว่าhexspeakและค่อนข้างใช้กันโดยทั่วไป ในตัวเลขเวทย์มนตร์ ตัวอย่างเช่น IPv6 ของ Facebook คือ*:FACE:B00C:*
phuclv

นั่นไม่เหมือนกันเลย คุณกำลังพูดถึง hex leetspeak นี่คือการใช้ตัวเลข 100 อย่างมีความหมายว่า "64" เพียงเพราะดูเหมือนว่า 6 และ 4 เป็นเลขฐานสิบหก
Nyerguds

@ Nyerguds สตริง "6486" เป็นฐานสิบหกซึ่งเห็นได้ชัดว่าเป็น hexspeak ที่คุณอ่านตัวเลขฐานสิบหกเป็นตัวอักษร เกิดอะไรขึ้นกับ 0xDEADBEEF เมื่อคุณใช้ 0xD เป็น D เพราะดูเหมือน D ถ้ามันน่าเกลียดBCDก็น่าเกลียดเช่นกันที่คุณใช้ตัวเลข 100 เพื่อหมายถึง 64
phuclv

5

ข้อความแสดงแทนEXE Explorer
ไฟล์เรียกทำงานที่ปฏิบัติการได้สำหรับประเภทไฟล์ OS / 2, NE, PE32, PE32 + และ VxD

โปรแกรมนี้จะขึ้นอยู่กับMITEC อ่านปฏิบัติการแบบพกพา มันอ่านและแสดงคุณสมบัติและโครงสร้างไฟล์ที่สามารถเรียกใช้งานได้ รองรับไฟล์ PE32 (Portable Executable), PE32 + (64 บิต), NE (Windows 3.x New Executable) และไฟล์ VxD (ไดรเวอร์อุปกรณ์ Windows 9x Virtual Device) .NET executables รองรับเช่นกัน

มันระบุชั้นเรียนที่แนะนำหน่วยที่ใช้และรูปแบบสำหรับไฟล์ที่รวบรวมโดยคอมไพเลอร์ Borland

หมายเหตุ: มันมาพร้อมกับ GUI และให้คุณ 'สำรวจ' โครงสร้างไฟล์ไบนารี Windows
น่าเศร้าที่ดูเหมือนจะไม่ยอมรับแม้แต่ไบนารีเป้าหมายที่จะเปิดจากบรรทัดคำสั่ง แต่รายละเอียดที่ให้อาจมีประโยชน์ในบางกรณี


3

คุณสามารถตรวจสอบการใช้งานsigcheck.exeซึ่งเป็นส่วนหนึ่งของSysinternals Suiteเช่น

$ 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

1
ยังใช้งานได้กับ DLLs ด้วย
user34660

2

อีกวิธีที่ง่ายคือใช้ 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...
...

ที่เดียวที่จะรับ PESnoop ได้ที่นี่: http://www.prestosoft.com/download/plugins/PESnoop.zip

- เดฟ



2

Dependency Walker เป็นเครื่องมือ GUI ที่มีประโยชน์ในการตรวจสอบไม่เพียง แต่ไฟล์ exe แต่ยังรวมถึงไฟล์ DLL ไฟล์ DLL หรือ EXE 64 บิตจะมีไอคอน 64 บิตอยู่ข้างๆ



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.