Szybki sposób na sprawdzenie, czy zainstalowana aplikacja jest 64-bitowa czy 32-bitowa

107

Mam aplikację innej firmy (w tym przypadku Cognos Data Manager) zainstalowaną w 64-bitowym systemie Windows Server 2003.

Czy istnieje szybki sposób ustalenia, czy aplikacja została zbudowana / skompilowana jako aplikacja 64-bitowa, czy jako aplikacja 32-bitowa?

Domyślnie program chciał zostać zainstalowany w Program Files (x86). Zgaduję, że to oznacza, że ​​jest to wersja 32-bitowa. Musiałem zmusić go, aby porozmawiał z bazą danych Oracle i aby to działało, ostatecznie ponownie go zainstalowałem w ścieżce katalogu, w którym nie było nawiasów „(” i „)”, ponieważ powodowało to problem. Zainstalowałem również 64-bitowych i 32-bitowych klientów Oracle.

Do przyszłego użytku chciałbym móc wpisać polecenie „xxxx fred.exe” i powiedzieć mi, czy fred.exe będzie wymagał konfiguracji 32-bitowej czy 64-bitowej (np. Źródła danych ODBC itp.).

Gary
źródło
1
Jeśli aplikacja znajduje się w folderze Progam Files (x86), w żadnym wypadku nie zapewnia ona 64-bitowej kompilacji. To tylko konwencja przestrzegana przez większość instalatorów. Na przykład Chrome 64-bitowy instaluje się w folderze x86 (niestety).
nawfal

Odpowiedzi:

92

Jeśli uruchomisz aplikację, w Menedżerze zadań powinna ona zawierać * 32, co oznacza, że ​​jest 32-bitowa. Jestem pewien, że zaimplementowali to w Server 2003, choć nie jest to pozytywne, mam nadzieję, że ktoś to wyjaśni.

Możesz również uruchomić go przez PEiD . PEiD nie obsługuje 64-bitowych PE, więc dusi się, jeśli jest 64-bitowy.

Istnieje również słynny plik GNU dla systemu Windows. Powie ci wszelkiego rodzaju informacje o pliku wykonywalnym.

Przykład:

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

Jak widać, 64-bitowy instalator WinRAR jest klasyfikowany jako PE32 +, co oznacza 64-bitowy plik wykonywalny . Aplikacja 32-bitowa to po prostu PE32, 32-bitowy plik wykonywalny.

John T.
źródło
1
Bardzo proszę :)
John T
1
Alternatywą dla Menedżera zadań może być Process Explorer, możesz tam dodać kolumnę Typ obrazu. W menu Opcje możesz zastąpić Menedżera zadań tym, jeśli chcesz ... :-)
Tamara Wijsman,
Co pokazuje plik GNU w programach takich jak Process Explorer, które mają 32-bitowy kod pośredniczący, który wykrywa, że ​​działa w systemie 64-bitowym i rozpakowuje 64-bitowy obraz do uruchomienia?
afrazier
Pobierz i wypróbuj sam?
John T
2
Aby zainstalować filez GnuWin32, pobierz „pełny pakiet” (zamiast „plików binarnych”) z gnuwin32.sourceforge.net/packages/file.htm
Pułkownik Panic
40

Najłatwiejszym sposobem, bez instalowania innego programu lub uruchamiania pliku, jest kliknięcie pliku prawym przyciskiem myszy, wybranie Właściwości , a następnie przejście do zakładki Kompatybilność . Jeśli nie ma żadnych wyszarzonych opcji i oferowane są tryby Windows XP i 9x, jest to wersja 32-bitowa. Jeśli są wyszarzone opcje, a Vista jest najwcześniej oferowanym trybem, jest to wersja 64-bitowa. W ogóle nie trzeba uruchamiać aplikacji.

Jeśli aplikacja jest już uruchomiona, nadal możesz oczywiście skorzystać z pomysłu * 32 wymienionego w innych odpowiedziach. Nie jest to jednak dostępne w systemie Windows 8.x i jego nowym menedżerze zadań. Na szczęście możesz włączyć kolumnę Platforma, klikając prawym przyciskiem myszy nagłówki kolumn na karcie Szczegóły i wybierając Wybierz kolumny . Kolumna będzie zawierać odpowiednio „32-bit” lub „64-bit”.

trlkly
źródło
Brzmi dość rozsądnie.
ArtOfWarfare
1
Tak, podoba mi się ten. Chcę to sprawdzić pod kątem pojedynczego pliku i nie chciałem ładować laptopa pełnego pobranego badziewia ...
Gottlieb Notschnabel
Powiadomienie * 32 nie jest dostępne w menedżerze zadań Windows 8, ale ma kolumnę „Platforma”, która domyślnie nie jest widoczna. Zobacz 7tutorials.com/…
Pino
Dzięki @Pino. Nigdy nie miałem żadnego powodu, aby to rozgryźć, gdy korzystałem z systemu Windows 8. (wróciłem do systemu Windows 7, gdy mój HD się zawiesił i zdałem sobie sprawę, że nigdy nie korzystałem z żadnych aplikacji W8). Zaktualizuję swoją odpowiedź.
trlkly
25

Jeśli masz zainstalowany program Visual Studio lub platformę SDK, możesz użyć dumpbin /headersdo sprawdzenia wartości nagłówka PE.

Przykład 64-bitowego pliku wykonywalnego:

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

I dla wersji 32-bitowej:

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

Pierwsza wartość w nagłówku pliku mówi o architekturze: 0x14C dla x86 lub 0x8664 dla x64.

Joey
źródło
Ciekawe i szczegółowe podejście, naprawdę muszę ponownie zacząć programować, +1.
John T
18

Jeśli masz edytor szesnastkowy, po prostu otwórz go i wkrótce po standardowym wprowadzeniu do nagłówka (np. „Ten program nie może być uruchomiony w trybie DOS ...”) zobaczysz albo

„PE..L” (kod szesnastkowy: 504500004C) = 32 bity

lub

„PE..d †” (kod szesnastkowy: 504500006486) = 64-bitowy

Brian Weigand
źródło
Używam Total Commander jako menedżera plików, więc dla mnie jest to najprostsze rozwiązanie. Mogę po prostu nacisnąć klawisz F3, aby wyświetlić początek pliku i natychmiast uzyskać odpowiedź.
mivk
1
Ew, faktycznie napisali „64” „86” jako bajty czytelne dla człowieka, aby wskazać 64-bit. Jak brzydka :)
Nyerguds
@Nyerguds dlaczego brzydki? nazywa się hexspeak i jest dość powszechnie używany, szczególnie. w liczbach magicznych. Na przykład IPv6 na Facebooku to*:FACE:B00C:*
phuclv
To wcale nie to samo. Mówisz tylko o hex leetspeak. Dosłownie używa się liczby 100 w znaczeniu „64” tylko dlatego, że wygląda na 6 i 4 w systemie szesnastkowym.
Nyerguds,
@Nyerguds ciąg „6486” znajduje się w systemie szesnastkowym, co oczywiście jest szesnastkowym, w którym cyfry szesnastkowe są odczytywane jako znaki. Co jest nie tak z 0xDEADBEEF, gdy używasz 0xD dla D, ponieważ wygląda jak D? Jeśli to brzydkie, to BCD jest również brzydkie, gdy dosłownie używasz liczby 100, co oznacza 64
phuclv
5

alternatywny tekstEksplorator
plików wykonywalnych EXE Explorer dla typów plików OS / 2, NE, PE32, PE32 + i VxD.

Ta aplikacja jest oparta na przenośnym czytniku wykonywalnym MiTeC . Odczytuje i wyświetla właściwości i strukturę pliku wykonywalnego. Jest kompatybilny z typami plików PE32 (Portable Executable), PE32 + (64bit), NE (Windows 3.x Nowy plik wykonywalny) i VxD (Windows 9x Virtual Device Driver). Obsługiwane są również pliki wykonywalne .NET.

Wymienia wprowadzone klasy, używane jednostki i formularze dla plików skompilowanych przez kompilatory Borland.

Uwaga: Zawiera GUI i pozwala „zbadać” strukturę plików binarnych systemu Windows.
Niestety, wydaje się, że nawet nie akceptuje docelowego pliku binarnego do otwarcia z wiersza poleceń. Ale podane szczegóły mogą być przydatne w niektórych przypadkach.

nik
źródło
3

Możesz sprawdzić za pomocą, sigcheck.exektóra część pakietu Sysinternals Suite , np

$ 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
źródło
1
Działa to również w przypadku bibliotek DLL.
user34660
2

Innym prostym sposobem jest użycie 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...
...

Jedno miejsce na zdobycie PESnoop jest tutaj: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave

ViperGeek
źródło
2

A dla was, entuzjastów GUI, absolutnie najprostszym sposobem jest zainstalowanie tego rozszerzenia Explorer:

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

- Dave

ViperGeek
źródło
"Instalacja nie powiodła się". Tak
ArtOfWarfare
2

Dependency Walker to przydatne narzędzie GUI do weryfikacji nie tylko plików exe, ale także plików DLL. 64-bitowy plik DLL lub EXE będzie miał małą ikonę 64 obok niego.

Bobc
źródło
1
filever /bad *.exe

WAMD64, W32i lub W16 będą w pierwszej kolumnie.

Kok
źródło