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


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 compilado / compilado como um aplicativo de 64 bits ou como um aplicativo de 32 bits?

Por padrão, um programa queria ser instalado em Arquivos de Programas (x86). Eu estou supondo que isso significa que é uma versão de 32 bits. Eu tive que fazê-lo falar com um banco de dados Oracle e para que funcionasse, eu eventualmente o reinstalei em um caminho de diretório que não tinha colchetes "(" e ")", pois isso estava causando um problema. Eu também instalei clientes Oracle de 64 e 32 bits.

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


102


origem


Se um aplicativo está na pasta Progam Files (x86), isso não garante que o aplicativo seja compilado em 64 bits. É apenas uma convenção que a maioria dos instaladores segue. Por exemplo, O Chrome 64 bits é instalado na pasta x86 (infelizmente). - nawfal


Respostas:


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

Você também pode executá-lo através PEiD. O PEiD não suporta PEs de 64 bits, por isso vai sufocar se for de 64 bits.

Há também o famoso Arquivo GNU para Windows. Ele lhe dirá todo tipo de informação 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 +, que significa um executável de 64 bits. O aplicativo de 32 bits é simplesmente PE32, um executável de 32 bits.


87



Agarrou o GnuFile e funcionou muito bem. Obrigado. - Gary
Você é muito bem-vindo :) - John T
Uma alternativa para o Gerenciador de Tarefas pode ser o Process Explorer, você pode adicionar a coluna Tipo de Imagem lá. Através do menu Opções você pode substituir o Gerenciador de Tarefas por isso, se você quiser ... :-) - Tom Wijsman
O que o arquivo GNU mostra com programas como o Process Explorer, que tem um stub de 32 bits que detecta que está sendo executado em um sistema de 64 bits e descompacta uma imagem de 64 bits para executar? - afrazier
Para instalar file do GnuWin32, baixe 'pacote completo' (ao invés de 'binários') de gnuwin32.sourceforge.net/packages/file.htm - Colonel Panic


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

Se a aplicação já foi iniciada, você pode, obviamente, ainda usar a idéia * 32 mencionada em outras respostas. No entanto, isso não está disponível no Windows 8.xe no novo gerenciador de tarefas. Felizmente, você pode ativar um Plataforma coluna clicando com o botão direito do mouse nos cabeçalhos da coluna no Detalhes separador e escolha Selecione colunas. A coluna conterá "32 bits" ou "64 bits" conforme apropriado.


38



Soa bastante razoável. - ArtOfWarfare
Sim eu gosto desse. Quero verificar para um único arquivo e não quero carregar meu laptop cheio de lixo 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. Vejo 7tutorials.com/… - Pino
Obrigado @Pino. Eu nunca tive nenhum motivo para descobrir isso enquanto eu usava o Windows 8. (Voltei para o Windows 7 quando meu HD caiu e percebi que nunca usei nenhum aplicativo W8). Eu atualizarei minha resposta. - trlkly


Se você tiver o Visual Studio ou o Platform SDK instalado, poderá usar dumpbin /headers para olhar os valores do cabeçalho 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.


25



Interessante e detalhada abordagem, eu realmente preciso começar a programar novamente, +1. - John T


Se você tem um programa editor hexadecimal, basta abrir o seu arquivo com ele e logo após o cabeçalho padrão da introduçã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


18



Eu uso o Total Commander como meu gerenciador de arquivos, então, para mim, essa é a solução mais simples. Eu posso apenas pressionar F3 para ver o início do arquivo e ter a resposta instantaneamente. - mivk
Ew, eles realmente escreveram "64" "86" como bytes legíveis lá para indicar 64 bits. Que feio :) - Nyerguds
@Nyerguds porque feio? é chamado hexspeak e é bastante comumente usado, esp. em números mágicos. Por exemplo, o IPv6 do facebook é *:FACE:B00C:* - phuclv
Isso não é o mesmo. Você está apenas falando sobre o leetspeak hexadecimal. Isto está literalmente usando o número 100 como significando "64" só porque se parece com um 6 e um 4 em hexadecimal. - Nyerguds
@Nyerguds a string "6486" está em hexadecimal, o que obviamente é hexspeak onde você lê dígitos hexadecimais como caracteres. O que há de errado com 0xDEADBEEF quando você usa 0xD para D porque se parece com D? Se é feio então BCD também é feio onde você literalmente usa o número 100 para significar 64 - phuclv


alt textEXE Explorer
Explorador de arquivos executável para os tipos de arquivo OS / 2, NE, PE32, PE32 + e VxD.

Esta aplicação é baseada em Leitor executável portátil de MiTeC. Ele lê e exibe as propriedades e estrutura do arquivo executável. É compatível com os tipos de arquivo PE32 (Portable Executable), PE32 + (64 bits), NE (Windows 3.x New Executable) e VxD (Windows 9x Virtual Device Driver). Executáveis ​​.NET também são suportados.

Enumera classes introduzidas, unidades e formulários usados ​​para arquivos compilados pelos compiladores da Borland.

Nota: Ele vem com uma GUI e permite "explorar" a estrutura de arquivos binários do Windows.
Infelizmente, parece que nem mesmo aceita um binário de destino para abrir a partir da linha de comando. Mas o detalhe que ele fornece pode ser útil em alguns casos.


5





Você pode verificar usando sigcheck.exe que faz parte Suíte Sysinternals, 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

3



Isso também funciona para DLLs. - user34660


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 lugar para obter PESnoop é aqui: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave


2





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

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

- Dave


2



"Instalação falhada". Yay. - ArtOfWarfare


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


2





filever /bad *.exe

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


1