Con la mayoría de los ejecutables de Windows (DLL, EXE...), la versión y otros detalles se pueden ver usando la pestaña "Detalles" en "Propiedades" ( Alt+ Enter).
Me pregunto: ¿existe también una forma de línea de comandos para hacer esto? Estoy particularmente interesado en la versión del producto, pero también otras cosas podrían ser útiles.
Se desean las siguientes propiedades, en orden de prioridad:
- aceptar la ruta exe/dll como parámetro
- salida a salida estándar (para que pueda procesar el resto a través de
|
una tubería) - Disponible de forma predeterminada en todos los Windows compatibles (XP+)
- disponible de forma predeterminada en Windows Vista+
- Disponible de forma predeterminada en Windows XP.
- utilizable en entorno comercial
- licencia gratuita (tipo GPL)
- portátil (es decir, exe independiente, tal vez acompañado de una DLL)
Respuesta1
En PowerShell, get-command "full-path-to-executable" | format-list
funcionaría. Powershell es la nueva línea de comandos para Vista y versiones posteriores de Windows, se puede instalar en XP.
Respuesta2
Puedes usarsigcheck.exe
herramienta portátil que forma parte deSuite Sysinternals, p.ej
$ 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 versiones anteriores de Windows como XP/2k/2003 (aún funciona en la nueva), usefilever.exe
herramienta (verifique elenlace directoenexedll.info) para obtener información específica sobre un archivo como:
- La plataforma en la que se ejecuta el archivo.
- La versión del archivo.
- Los atributos del archivo.
- El tipo de archivo
- El idioma del archivo.
- Si el archivo es un tipo de envío o un tipo de depuración
- El tamaño del archivo
- La fecha en que se creó el archivo.
- La ruta del archivo
Algunos otros a considerar:
El volcador de archivos binarios COFF de Microsoft(DUMPBIN.EXE)
Muestra información sobre archivos binarios de formato de archivo de objetos común (COFF). Puede utilizar DUMPBIN para examinar archivos de objetos COFF, bibliotecas estándar de objetos COFF, archivos ejecutables y bibliotecas de vínculos dinámicos (DLL).
binwalk
- busque en los archivos especificados códigos de operación ejecutables comunes a una variedad de arquitecturas de CPU. Herramienta fácil de usar para analizar, realizar ingeniería inversa y extraer archivos/datos interesantes de archivos binarios.
Para obtener más comandos, consulte:
Respuesta3
Utilice el de MicrosoftUtilidad DUMPBIN.
Tiene muchas opciones útiles, sin embargo, depende de lo que quieras hacer.
Sin embargo, no es gratuito, pero creo que se puede obtener gratuitamente con el SDK de Windows.
Respuesta4
Cuando investigué inicialmente esta área problemática, descubrí que usar comandos simples como (Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion
, como se sugiere en las respuestas deesta pregunta SO— no funcionó de manera confiable en todos los ejecutables (valor de retorno vacío). También noté que Explorerhacemostrar de manera confiable los valores en la hoja de Propiedades de un ejecutable determinado, así que decidí construir una función de Powershell para imitar lo que hace Explorer (presumiblemente) para recuperar las propiedades.
Aquí hay una función de Powershell para recuperar todas las propiedades extendidas, incluida la versión del producto.
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
La forma más sencilla de utilizar esta función es copiarla/pegarla en una ventana de Powershell y presionar Return ↵. Entonces puedes usarlo así:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe"
Si desea obtener el valor de una propiedad específica, como la versión del producto, utilícelo así:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe" | Where-Object {$_.Name -eq 'Product Version'} | Select-Object -ExpandProperty Value