Maneira rápida de saber se um aplicativo instalado é de 64 ou 32 bits

107

Eu tenho um aplicativo de terceiros (neste caso, o Cognos Data Manager) instalado no Windows Server 2003 de 64 bits.

Existe uma maneira rápida de determinar se um aplicativo foi criado / compilado como um aplicativo de 64 bits ou como um aplicativo de 32 bits?

Por padrão, um programa queria ser instalado nos Arquivos de Programa (x86). Acho que isso significa que é uma versão de 32 bits. Eu precisava conversar com um banco de dados Oracle e, para que isso funcionasse, eu o reinstalei em um caminho de diretório que não tinha colchetes "(" e ")", pois isso estava causando um problema. Também instalei clientes Oracle de 64 e 32 bits.

Para referência futura, eu gostaria de poder digitar um comando "xxxx fred.exe" e informar se o fred.exe precisaria de uma configuração de 32 ou 64 bits (por exemplo, fontes de dados ODBC etc.).

Gary
fonte
1
Se um aplicativo estiver na pasta Arquivos de Programa (x86), isso nunca garantirá que o aplicativo seja compilado em 64 bits. É apenas uma convenção que a maioria dos instaladores segue. Por exemplo, o Chrome de 64 bits é instalado na pasta x86 (infelizmente).
Nawfal

Respostas:

92

Se você executar o aplicativo, no Gerenciador de Tarefas, ele deverá ter um * 32 ao lado para indicar que é de 32 bits. Tenho certeza de que eles implementaram isso no Server 2003, embora não sejam positivos, espero que alguém possa esclarecer.

Você também pode executá-lo através do PEiD . O PEiD não suporta PEs de 64 bits; portanto, ele engasgará se for de 64 bits.

Há também o famoso arquivo GNU para Windows. Ele informará todos os tipos de informações sobre um executável.

Exemplo:

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

Como você pode ver, o instalador do WinRAR de 64 bits é classificado como PE32 +, o que significa um executável de 64 bits . O aplicativo de 32 bits é simplesmente PE32, um executável de 32 bits.

John T
fonte
1
De nada :)
John T
1
Uma alternativa ao Gerenciador de Tarefas pode ser o Process Explorer; você pode adicionar a coluna Tipo de Imagem. Através do menu Opções, você pode substituir o Gerenciador de Tarefas por isso, se você quiser ... :-)
Tamara Wijsman
O que o arquivo GNU mostra com programas como o Process Explorer, que possui um stub de 32 bits que detecta a execução em um sistema de 64 bits e descompacta uma imagem de 64 bits para executar?
afrazier 04/04/10
Faça o download e tente você mesmo?
John T
2
Para instalar a filepartir do GnuWin32, baixe 'pacote completo' (em vez de 'binários') em gnuwin32.sourceforge.net/packages/file.htm
Coronel Panic
40

A maneira mais fácil, sem instalar outro programa ou executar o arquivo, é apenas clicar com o botão direito do mouse no arquivo, escolher Propriedades e, em seguida, acessar a guia Compatibilidade . Se não houver opções acinzentadas e os modos Windows XP e 9x forem oferecidos, é de 32 bits. Se houver opções acinzentadas e o Vista for o modo mais antigo oferecido, é de 64 bits. Não há necessidade de iniciar o aplicativo.

Se o aplicativo já estiver iniciado, é claro que você ainda poderá usar a ideia * 32 mencionada em outras respostas. No entanto, isso não está disponível no Windows 8.xe seu novo gerenciador de tarefas. Felizmente, você pode ativar uma coluna Plataforma clicando com o botão direito do mouse nos cabeçalhos da coluna na guia Detalhes e escolhendo Selecionar colunas . A coluna conterá "32 bits" ou "64 bits", conforme apropriado.

trlkly
fonte
Parece bastante razoável.
ArtOfWarfare 30/08/2013
1
Sim, eu gosto deste. Eu quero verificá-lo para um único arquivo e não quer carregar o meu laptop cheio de porcaria baixado ...
Gottlieb Notschnabel
O aviso * 32 não está disponível no gerenciador de tarefas do Windows 8, mas possui uma coluna "Plataforma" que, por padrão, não é visível. Veja 7tutorials.com/…
Pino
Obrigado @Pino. Eu nunca tive nenhum motivo para descobrir isso enquanto usava o Windows 8. (Voltei ao Windows 7 quando meu HD travou e percebi que nunca havia usado nenhum aplicativo W8.) Atualizarei minha resposta.
trlkly
25

Se você possui o Visual Studio ou o Platform SDK instalado, pode usar dumpbin /headerspara examinar os valores do cabeçalho do PE.

Exemplo para um executável de 64 bits:

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

E para 32 bits:

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

O primeiro valor no cabeçalho do arquivo informa a arquitetura: 0x14C para x86 ou 0x8664 para x64.

Joey
fonte
Abordagem interessante e detalhada, eu realmente preciso começar a programar novamente, +1.
John T
18

Se você possui um programa de edição hexadecimal, basta abrir seu arquivo com ele e logo após o item de introdução do cabeçalho padrão (como "Este programa não pode ser executado no modo DOS ..."), você verá

"PE..L" (código hexadecimal: 504500004C) = 32 bits

ou

"PE..d †" (código hexadecimal: 504500006486) = 64 bits

Brian Weigand
fonte
Eu uso o Total Commander como meu gerenciador de arquivos. Portanto, para mim, esta é a solução mais simples. Eu posso simplesmente pressionar F3 para visualizar o início do arquivo e obter a resposta instantaneamente.
mivk
1
Na verdade, eles escreveram "64" "86" como bytes legíveis por humanos para indicar 64 bits. Como feio :)
Nyerguds
@Nyerguds por que feio? chama-se hexspeak e é bastante usado, esp. em números mágicos. Por exemplo, o IPv6 do facebook é*:FACE:B00C:*
phuclv
Isso não é o mesmo. Você está falando apenas de hex leetspeak. Isso está literalmente usando o número 100 como significando "64" apenas porque parece um 6 e um 4 em hexadecimal.
Nyerguds
@ Nyerguds a string "6486" está em hexadecimal, que obviamente é o hexspeak onde você lê dígitos hexadecimais como caracteres. O que há de errado com 0xDEADBEEF quando você usa 0xD para D porque ele se parece com D? Se é feio depois BCD também é feio, onde você literalmente usar o número 100 significa 64
phuclv
5

texto alternativoEXE Explorer
Executável File Explorer para os tipos de arquivo OS / 2, NE, PE32, PE32 + e VxD.

Esta aplicação é baseada no MiTeC Portable Executable Reader . Ele lê e exibe propriedades e estrutura de arquivos executáveis. É compatível com os tipos de arquivo PE32 (executável portátil), PE32 + (64 bits), NE (novo executável do Windows 3.x) e VxD (driver de dispositivo virtual do Windows 9x). Os executáveis ​​.NET também são suportados.

Ele enumera classes introduzidas, unidades usadas e formulários para arquivos compilados pelos compiladores Borland.

Nota: Ele vem com uma GUI e permite 'explorar' a estrutura de arquivos binários do Windows.
Infelizmente, ele nem parece aceitar um binário de destino para abrir a partir da linha de comando. Mas os detalhes que ele fornece podem ser úteis em alguns casos.

nik
fonte
3

Você pode verificar usando o sigcheck.exeque faz parte do Sysinternals Suite , por exemplo,

$ 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
fonte
1
Isso também funciona para DLLs.
User34660
2

Outra maneira simples é usar o 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...
...

Um local para obter o PESnoop é aqui: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave

ViperGeek
fonte
2

E para os entusiastas da GUI, a maneira mais fácil é instalar esta extensão do Explorer:

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

- Dave

ViperGeek
fonte
"Instalação falhada". Yay.
ArtOfWarfare 30/08/2013
2

O Dependency Walker é uma ferramenta GUI útil para verificar não apenas os arquivos exe, mas também os arquivos DLL. Um arquivo DLL ou EXE de 64 bits terá um pequeno ícone de 64 ao lado.

bobc
fonte
1
filever /bad *.exe

WAMD64 ou W32i ou W16 estarão na primeira coluna.

Prumo
fonte
1

Se você executar o programa, poderá usar o "Process Monitor" (ProcMon) do Sysinternal Suite .

É portátil e fornece muitas informações sobre seus processos.

yucer
fonte
1
Provavelmente é um exagero.
Synetech