
Com a maioria dos executáveis do Windows (DLL, EXE...), a versão e outros detalhes podem ser visualizados na guia "Detalhes" em "Propriedades" ( Alt+ Enter).
Eu me pergunto: existe também uma maneira de linha de comando para fazer isso? Estou particularmente interessado na versão do produto, mas também outras coisas podem ser úteis.
As seguintes propriedades são desejadas, em ordem de precedência:
- aceite o caminho exe/dll como parâmetro
- saída para saída padrão (para que você possa processar o resto via
|
pipe) - disponível por padrão em todos os Windows suportados (XP+)
- disponível por padrão no Windows Vista+
- disponível por padrão no Windows XP
- utilizável em ambiente comercial
- licença gratuita (semelhante à GPL)
- portátil (ou seja, exe autônomo, talvez acompanhado de DLL)
Responder1
No PowerShell, get-command "full-path-to-executable" | format-list
resolveria o problema. Powershell é a nova linha de comando para Vista e Windows posterior, pode ser instalada no XP.
Responder2
Você pode usarsigcheck.exe
ferramenta portátil que faz parteSuí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
Para versões mais antigas do Windows, como XP/2k/2003 (ainda funciona no novo), usefilever.exe
ferramenta (verifique olink diretonoexedll.info) para obter informações específicas sobre um arquivo, como:
- A plataforma na qual o arquivo é executado
- A versão do arquivo
- Os atributos do arquivo
- O tipo de arquivo
- O idioma do arquivo
- Se o arquivo é do tipo de envio ou de depuração
- O tamanho do arquivo
- A data em que o arquivo foi criado
- O caminho do arquivo
Alguns outros a considerar:
O dumper de arquivo binário Microsoft COFF(DUMPBIN.EXE)
Exibe informações sobre arquivos binários Common Object File Format (COFF). Você pode usar DUMPBIN para examinar arquivos de objetos COFF, bibliotecas padrão de objetos COFF, arquivos executáveis e bibliotecas de vínculo dinâmico (DLLs).
binwalk
- pesquise no(s) arquivo(s) especificado(s) códigos de operação executáveis comuns a uma variedade de arquiteturas de CPU. Ferramenta fácil de usar para análise, engenharia reversa e extração de arquivos/dados interessantes de arquivos binários.
Para mais comandos, verifique:
Responder3
Utilize o MicrosoftUtilitário DUMPBIN.
Tem muitas opções úteis, porém depende do que você deseja fazer.
No entanto, não é gratuito, mas acredito que possa ser obtido gratuitamente com o Windows SDK.
Responder4
Quando examinei inicialmente esta área problemática, descobri que usar comandos simples como (Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion
- conforme sugerido nas respostas deesta pergunta SO— não funcionou de forma confiável em todos os executáveis (valor de retorno vazio). Também notei que o Explorerfazexibir de forma confiável os valores na folha de propriedades de um determinado executável, então decidi construir uma função Powershell para imitar o que o Explorer (presumivelmente) faz para recuperar as propriedades.
Aqui está uma função Powershell para recuperar todas as propriedades estendidas, incluindo a versão do produto.
function Get-AllExtendedProperties {
param (
[string]$FilePath
)
If (-not $FilePath) {
Throw "Error: missing `$FilePath parameter"
}
$file = Get-Item $FilePath
If ($file -and $file.Exists) {
$parentFolder = Split-Path $file.FullName -Parent
$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace($parentFolder)
$fileItem = $folder.ParseName($file.Name)
# Get all extended properties
$extendedProperties = @{}
For ($i = 0; $i -lt 300; $i++) {
$propertyValue = $folder.GetDetailsOf($fileItem, $i)
if ($propertyValue) {
$propertyName = $folder.GetDetailsOf($folder.Items, $i)
$extendedProperties[$propertyName] = $propertyValue
}
}
# Sort the hashtable by property name
$sortedExtendedProperties = $extendedProperties.GetEnumerator() | Sort-Object Name | ForEach-Object { $_.Key = $_.Key.Trim(); $_ }
Write-Output $sortedExtendedProperties
} Else {
Throw "Error: missing file"
}
}
Uso
A maneira mais simples de usar esta função é copiá-la/colá-la em uma janela do Powershell e pressionar Return ↵. Então você pode usá-lo assim:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe"
Se você deseja obter o valor de uma propriedade específica, como a Versão do Produto, use-o assim:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe" | Where-Object {$_.Name -eq 'Product Version'} | Select-Object -ExpandProperty Value