Какие есть удобные способы проверки сведений о DLL/EXE-файлах с помощью командной строки?

Какие есть удобные способы проверки сведений о DLL/EXE-файлах с помощью командной строки?

Для большинства исполняемых файлов Windows (DLL, EXE...) версию и другие сведения можно просмотреть на вкладке «Подробности» в «Свойствах» ( Alt+ Enter).

Подробная информация о shell32.dll из Windows 7 amd64

Интересно: есть ли способ сделать это через командную строку? Меня особенно интересует версия продукта, но и другие вещи могут быть полезны.

Требуются следующие свойства в порядке приоритета:

  • принять путь 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

Связанный контент