Cách nhanh chóng để biết ứng dụng đã cài đặt là 64 bit hay 32 bit


107

Tôi đã cài đặt ứng dụng của bên thứ ba (trong trường hợp này là Trình quản lý dữ liệu Cognos) được cài đặt trên Windows Server 2003 64 bit.

Có cách nào nhanh chóng để xác định xem một ứng dụng đã được xây dựng / biên dịch thành ứng dụng 64 bit hay là ứng dụng 32 bit không?

Theo mặc định, một chương trình muốn được cài đặt trong Tệp chương trình (x86). Tôi đoán điều đó có nghĩa là nó là phiên bản 32 bit. Tôi đã phải làm cho nó nói chuyện với cơ sở dữ liệu của Oracle và để nó hoạt động, cuối cùng tôi đã cài đặt lại nó trong một đường dẫn thư mục không có dấu ngoặc "(" và ")" vì nó gây ra sự cố. Tôi cũng đã cài đặt cả máy khách Oracle 64 bit và 32 bit.

Để tham khảo trong tương lai, tôi muốn có thể gõ lệnh "xxxx fred.exe" và yêu cầu tôi biết liệu fred.exe sẽ cần thiết lập 32 bit hay 64 bit (ví dụ: nguồn dữ liệu ODBC, v.v.).


1
Nếu một ứng dụng nằm trong thư mục Progam Files (x86) thì không có nghĩa là đảm bảo ứng dụng được biên dịch 64 bit. Đó chỉ là một quy ước mà hầu hết các trình cài đặt tuân theo. Ví dụ: Chrome 64 bit được cài đặt vào thư mục x86 (thật đáng buồn).
nawfal

Câu trả lời:


92

Nếu bạn chạy ứng dụng, trong Trình quản lý tác vụ, nó sẽ có * 32 bên cạnh để biểu thị nó là 32 bit. Tôi khá chắc chắn rằng họ đã thực hiện điều này trong Server 2003, mặc dù không tích cực, hy vọng ai đó có thể làm rõ.

Bạn cũng có thể chạy nó thông qua PEiD . PEiD không hỗ trợ PE 64 bit, vì vậy nó sẽ bị nghẹt nếu là 64 bit.

Ngoài ra còn có tệp GNU nổi tiếng cho Windows. Nó sẽ cho bạn biết tất cả các loại thông tin về một thực thi.

Thí dụ:

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

Như bạn có thể thấy, trình cài đặt WinRAR 64 bit được phân loại là PE32 +, có nghĩa là thực thi 64 bit . Ứng dụng 32 bit đơn giản là PE32, thực thi 32 bit.


1
Bạn rất hoan nghênh :)
John T

1
Một thay thế cho Trình quản lý tác vụ có thể là Process Explorer, bạn có thể thêm cột Loại hình ảnh ở đó. Thông qua menu Tùy chọn, bạn có thể thay thế Trình quản lý tác vụ bằng cách này nếu bạn muốn ... :-)
Tamara Wijsman

Tệp GNU hiển thị gì với các chương trình như Process Explorer, có sơ khai 32 bit phát hiện nó đang chạy trên hệ thống 64 bit và giải nén hình ảnh 64 bit để thực thi?
afrazier

Tải về nó và thử cho chính mình?
John T

2
Để cài đặt filetừ GnuWin32, hãy tải xuống 'gói hoàn chỉnh' (chứ không phải 'nhị phân') từ gnuwin32.sourceforge.net/packages/file.htmlm
Đại tá Panic

40

Cách dễ nhất, không cần cài đặt chương trình khác hoặc chạy tệp, chỉ cần nhấp chuột phải vào tệp, chọn Thuộc tính , rồi đi đến tab Tương thích . Nếu không có tùy chọn màu xám và các chế độ Windows XP và 9x được cung cấp, thì đó là 32 bit. Nếu có các tùy chọn màu xám và Vista là chế độ sớm nhất được cung cấp, thì đó là 64 bit. Không cần phải bắt đầu ứng dụng cả.

Nếu ứng dụng đã được khởi động, tất nhiên bạn vẫn có thể sử dụng ý tưởng * 32 được đề cập trong các câu trả lời khác. Tuy nhiên, điều này không có sẵn trong Windows 8.x và trình quản lý tác vụ mới của nó. May mắn thay, bạn có thể kích hoạt cột Nền tảng bằng cách nhấp chuột phải vào tiêu đề cột trong tab Chi tiết và chọn Chọn cột . Cột sẽ chứa "32 bit" hoặc "64 bit" khi thích hợp.


Âm thanh đủ hợp lý.
ArtOfWarfare

1
Vâng tôi thích cái này Tôi muốn kiểm tra nó cho một tệp duy nhất và không muốn tải máy tính xách tay của mình đầy rác đã tải xuống ...
Gottlieb Notschnabel

Thông báo * 32 không có sẵn trong trình quản lý tác vụ của Windows 8 nhưng nó có cột "Nền tảng", theo mặc định, không hiển thị. Xem 7tutorials.com/ từ
Pino

Cảm ơn @Pino. Tôi chưa bao giờ có bất kỳ lý do nào để tìm ra điều đó trong khi tôi sử dụng Windows 8. (Tôi đã quay lại Windows 7 khi HD của tôi bị hỏng và tôi nhận ra rằng tôi chưa bao giờ sử dụng bất kỳ ứng dụng W8 nào.) Tôi sẽ cập nhật câu trả lời của mình.
trlkly

25

Nếu bạn đã cài đặt Visual Studio hoặc SDK nền tảng, bạn có thể sử dụng dumpbin /headersđể xem các giá trị tiêu đề PE.

Ví dụ cho tệp thực thi 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
               ...

Và trong 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
               ...

Giá trị đầu tiên trong tiêu đề tệp cho bạn biết kiến ​​trúc: 0x14C cho x86 hoặc 0x8664 cho x64.


Cách tiếp cận thú vị và chi tiết, tôi thực sự cần bắt đầu lập trình lại, +1.
John T

18

Nếu bạn có chương trình soạn thảo hex, chỉ cần mở tệp của bạn với nó và ngay sau phần giới thiệu tiêu đề tiêu chuẩn (như "Chương trình này không thể chạy trong chế độ DOS ...") bạn sẽ thấy

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

hoặc là

"PE..d" (mã hex: 504500006486) = 64 bit


Tôi sử dụng Total Commander làm trình quản lý tệp của mình, vì vậy đối với tôi, đây là một giải pháp đơn giản nhất. Tôi chỉ có thể nhấn F3 để xem phần bắt đầu của tệp và có câu trả lời ngay lập tức.
mivk

1
Ew, họ thực sự đã viết "64" "86" dưới dạng các byte có thể đọc được ở đó để chỉ ra 64 bit. Thật xấu xí :)
Nyerguds

@Nyerguds tại sao xấu xí? nó được gọi là hexspeak và được sử dụng khá phổ biến, đặc biệt. bằng số ma thuật. Ví dụ: IPv6 của facebook là*:FACE:B00C:*
phuclv

Điều đó không giống nhau chút nào. Bạn chỉ đang nói về hex leetspeak. Điều này theo nghĩa đen là sử dụng số 100 có nghĩa là "64" chỉ vì nó trông giống như số 6 và số 4 trong hệ thập lục phân.
Nyerguds

@Nyerguds chuỗi "6486" ở dạng hex, rõ ràng hexspeak nơi bạn đọc các chữ số hex dưới dạng ký tự. Có gì sai với 0xDEADBEEF khi bạn sử dụng 0xD cho D vì nó trông giống D? Nếu nó xấu thì BCD cũng xấu, trong đó bạn thực sự sử dụng số 100 để có nghĩa là 64
phuclv

5

văn bản thay thếEXE Explorer
Tập tin thực thi Explorer cho các loại tệp OS / 2, NE, PE32, PE32 + và VxD.

Ứng dụng này dựa trên MiTeC Portable Executable Reader . Nó đọc và hiển thị các thuộc tính và cấu trúc tệp thực thi. Nó tương thích với các loại tệp PE32 (Portable Executable), PE32 + (64bit), NE (Windows 3.x New Executable) và VxD (Windows 9x Virtual Device Driver). Các tệp thực thi .NET cũng được hỗ trợ.

Nó liệt kê các lớp được giới thiệu, các đơn vị và biểu mẫu được sử dụng cho các tệp được biên dịch bởi trình biên dịch Borland.

Lưu ý: Nó đi kèm với GUI và cho phép bạn 'khám phá' cấu trúc tệp nhị phân của Windows.
Đáng buồn thay, nó dường như thậm chí không chấp nhận một nhị phân mục tiêu để mở từ dòng lệnh. Nhưng chi tiết nó cung cấp có thể hữu ích trong một số trường hợp.


3

Bạn có thể kiểm tra bằng sigcheck.exephần nào của Sysiternals Suite , vd

$ 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
Điều đó cũng làm việc cho DLL.
user34660

2

Một cách đơn giản khác là sử dụng 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...
...

Một nơi để nhận PESnoop là ở đây: http://www.prestosoft.com/doad/plugins/PESnoop.zip

- Dave



2

Dependency Walker là một công cụ GUI hữu ích để xác minh không chỉ các tệp exe mà cả các tệp DLL. Một tệp DLL hoặc EXE 64 bit sẽ có một biểu tượng 64 nhỏ bên cạnh.


1
filever /bad *.exe

WAMD64 hoặc W32i hoặc W16 sẽ ở cột đầu tiên.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.