Для большинства исполняемых файлов Windows (DLL, EXE...) версию и другие сведения можно просмотреть на вкладке «Подробности» в «Свойствах» ( Alt+ Enter).
Интересно: есть ли способ сделать это через командную строку? Меня особенно интересует версия продукта, но и другие вещи могут быть полезны.
Требуются следующие свойства в порядке приоритета:
- принять путь exe/dll в качестве параметра
- вывод на стандартный вывод (чтобы можно было обработать остальное через
|
конвейер) - доступно по умолчанию во всех поддерживаемых Windows (XP+)
- доступно по умолчанию в Windows Vista+
- доступно по умолчанию в Windows XP
- можно использовать в коммерческой среде
- свободная лицензия (типа GPL)
- портативный (т.е. автономный exe-файл, возможно, с DLL)
решение1
В powershell get-command "full-path-to-executable" | format-list
это сработает. Powershell — это новая командная строка для Vista и более поздних версий Windows, может быть установлена в XP.
решение2
Вы можете использоватьsigcheck.exe
портативный инструмент, который является частьюSysinternals Suite, например
$ 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
Для старых версий Windows, таких как XP/2k/2003 (она все еще работает в новых версиях), используйтеfilever.exe
инструмент (проверьтеПрямая ссылкавexedll.info) для получения конкретной информации о файле, такой как:
- Платформа, на которой работает файл
- Версия файла
- Атрибуты файла
- Тип файла
- Язык файла
- Является ли файл типом доставки или отладки
- Размер файла
- Дата создания файла
- Путь к файлу
Некоторые другие моменты, которые следует учитывать:
Средство для дампинга двоичных файлов Microsoft COFF(DUMPBIN.EXE)
Отображает информацию о двоичных файлах Common Object File Format (COFF). Вы можете использовать DUMPBIN для проверки объектных файлов COFF, стандартных библиотек объектов COFF, исполняемых файлов и динамически подключаемых библиотек (DLL).
binwalk
- поиск в указанных файлах исполняемых кодов операций, общих для различных архитектур ЦП. Простой в использовании инструмент для анализа, обратного проектирования и извлечения интересных файлов/данных из двоичных файлов.
Для получения дополнительных команд проверьте:
решение3
Используйте MicrosoftУтилита DUMPBIN.
Он имеет множество полезных опций, однако все зависит от того, что именно вы хотите сделать.
Однако он не бесплатный, но я полагаю, что его можно получить бесплатно с помощью Windows SDK.
решение4
Когда я впервые занялся этой проблемной областью, я обнаружил, что использование простых команд, таких как (Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion
— как предложено в ответахэтот ТАК вопрос— не работал надежно во всех исполняемых файлах (пустое возвращаемое значение). Я также заметил, что Explorerделаетнадежно отображать значения в листе свойств заданного исполняемого файла, поэтому я решил создать функцию Powershell, имитирующую то, что Проводник (предположительно) делает для извлечения свойств.
Вот функция Powershell для получения всех расширенных свойств, включая версию продукта.
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"
}
}
Применение
Самый простой способ использовать эту функцию — скопировать/вставить ее в окно Powershell и нажать Return ↵. Затем вы можете использовать ее следующим образом:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe"
Если вы хотите получить значение определенного свойства, например, версию продукта, используйте его следующим образом:
Get-AllExtendedProperties -FilePath "C:\path\to\file.exe" | Where-Object {$_.Name -eq 'Product Version'} | Select-Object -ExpandProperty Value