Швидкий спосіб визначити, чи встановлена ​​програма 64-розрядна або 32-розрядна


107

У мене встановлено стороннє додаток (в даному випадку Cognos Data Manager), встановлене на 64-розрядному Windows Server 2003.

Чи є швидкий спосіб визначити, чи додаток було побудовано / складено як 64-бітний додаток або як 32-бітний додаток?

За замовчуванням програма, яку потрібно було встановити у програмних файлах (x86). Я здогадуюсь, це означає, що це 32-бітна версія. Мені довелося змусити його поговорити з базою даних Oracle, і щоб змусити її працювати, я врешті встановив її в шлях до каталогу, в якому не було дужок "(" і ")", оскільки це спричиняло проблеми. Я також встановив як 64-розрядні, так і 32-розрядні клієнти Oracle.

Для подальшої довідки, я хотів би мати можливість ввести команду "xxxx fred.exe" і запропонувати мені сказати, чи потребуватиме fred.exe 32-бітна або 64-бітна установка (наприклад, джерела даних ODBC тощо).


1
Якщо додаток лежить у папці файлів Progam (x86), це аж ніяк не гарантує, що додаток складено 64 біт. Це лише умова, яку дотримуються більшість монтажників. Наприклад, Chrome 64 біт встановлюється в папку x86 (на жаль).
nawfal

Відповіді:


92

Якщо ви запускаєте додаток, у диспетчері завдань він повинен мати * 32 біля себе, щоб вказати, що це 32-бітний. Я впевнений, що це було реалізовано на сервері 2003, але не позитивно, але, сподіваюся, хтось може уточнити.

Ви також можете запустити його через PEiD . PEiD не підтримує 64-бітні PE, тому він задихнеться, якщо це 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
Альтернативою диспетчеру завдань може бути Провідник процесів, ви можете додати туди стовпець Тип зображення. Через меню "Параметри" ви можете замінити диспетчера завдань на це, якщо ви хочете ... :-)
Tamara Wijsman

Що показує файл GNU з такими програмами, як Process Explorer, у яких є 32-бітна заглушка, яка виявляє, що він працює в 64-бітній системі та розпаковує 64-бітове зображення для виконання?
afrazier

Завантажте його та спробуйте самі?
Джон Т

2
Щоб встановити fileз GnuWin32, завантажте "повний пакет" (а не "двійкові файли") з gnuwin32.sourceforge.net/packages/file.htm
Полковник Паніка

40

Найпростіший спосіб, не встановлюючи іншу програму чи не запускаючи файл, - це просто клацнути правою кнопкою миші файл, вибрати властивості та перейти на вкладку Сумісність . Якщо немає опцій із сірим кольором і пропонуються режими Windows XP та 9x, це 32-бітний. Якщо є варіанти сірого кольору, а Vista - це найдавніший запропонований режим, він 64-розрядний. Не потрібно запускати програму взагалі.

Якщо програма вже запущена, ви, звичайно, все ж можете використовувати ідею * 32, згадану в інших відповідях. Однак це недоступно в Windows 8.x та його новому менеджері завдань. На щастя, ви можете ввімкнути стовпчик « Платформа» , клацнувши правою кнопкою миші на заголовках стовпців на вкладці « Деталі » та вибравши « Вибрати стовпці» . Стовпець буде містити або "32-розрядні", або "64-бітні", як це доречно.


Звучить досить розумно.
ArtOfWarfare

1
Так, мені це подобається. Я хочу перевірити це на один файл і не хотів завантажувати мій ноутбук повним завантаженим
лаєм

Повідомлення * 32 відсутнє в диспетчері завдань Windows 8, але в ньому стовпчик "Платформа", який за замовчуванням не видно. Дивіться 7tutorials.com/…
Піно

Дякую @Pino У мене ніколи не було причин розбиратися в цьому, коли я використовував Windows 8. (Я повернувся до Windows 7, коли мій HD вийшов з ладу, і я зрозумів, що ніколи не використовував жодної програми W8.) Я оновлю свою відповідь.
trlkly

25

Якщо ви встановили Visual Studio або платформу SDK, ви можете dumpbin /headersпереглянути значення заголовка PE.

Приклад 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.
Джон Т

18

Якщо у вас є програма з шестигранним редактором, просто відкрийте файл із нею і незабаром після стандартного введення заголовка (наприклад, "Цю програму не можна запустити в режимі DOS ...") ви побачите або

"PE..L" (шістнадцятковий код: 504500004C) = 32 біт

або

"PE..d †" (шістнадцятковий код: 504500006486) = 64 біт


Я використовую Total Commander як мій менеджер файлів, тому для мене це найпростіше рішення. Я можу просто натиснути клавішу F3, щоб переглянути початок файлу і отримати відповідь миттєво.
mivk

1
Так, вони насправді написали "64" "86" як читабельні людині байти, щоб вказати 64 біт. Як потворно :)
Nyerguds

@Nyerguds чому некрасивий? це називається шестисторонній розмовою і досить часто використовується, особливо в магічних числах. Наприклад, IPv6 у Facebook*:FACE:B00C:*
phuclv

Це зовсім не те саме. Ви просто говорите про шістнадцятковий динамік. Це буквально використовує число 100 як значення "64" лише тому, що воно виглядає як шестинадцяткове значення 6 і 4.
Nyerguds

@Nyerguds рядок "6486" є шістнадцятковим, що, очевидно, є шістнадцятковим, де ви читаєте шістнадцяткові цифри як символи. Що не так з 0xDEADBEEF, коли ви використовуєте 0xD для D, оскільки він виглядає як D? Якщо це некрасиво, тоді BCD також некрасивий, коли ви буквально використовуєте число 100, щоб означати 64
phuclv

5

alt текст
Виконавчий файловий провідник EXE для типів файлів OS / 2, NE, PE32, PE32 + та VxD.

Ця програма базується на портативному виконуваному програмі зчитування MiTeC . Він читає та відображає властивості та структуру виконуваних файлів. Він сумісний з типами файлів PE32 (портативний виконуваний файл), PE32 + (64-бітний), NE (Windows 3.x, новий виконуваний файл) та VxD (драйвер віртуального пристрою Windows 9x). Також підтримуються виконувані файли .NET.

Він перераховує введені класи, використовувані одиниці та форми для файлів, складених компіляторами Borland.

Примітка. Він поставляється з графічним інтерфейсом і дозволяє «досліджувати» структуру бінарних файлів 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
Це також працює для DLL.
користувач34660

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 - корисний інструмент графічного інтерфейсу для перевірки не лише файлів EXE, але й DLL-файлів. 64-бітний файл DLL або EXE матиме трохи 64-х піктограм.


1
filever /bad *.exe

WAMD64 або W32i або W16 буде в першому стовпці.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.