Altほとんどの Windows 実行可能ファイル (DLL、EXE など) では、バージョンやその他の詳細は、「プロパティ」( + 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 スイート例えば
$ 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
XP/2k/2003などの古いバージョンのWindowsの場合(新しいバージョンでも動作します)、filever.exe
ツール(直接リンクでexedll.info について) を使用して、次のようなファイルに関する特定の情報を取得します。
- ファイルが実行されるプラットフォーム
- ファイルのバージョン
- ファイルの属性
- ファイルタイプ
- ファイルの言語
- ファイルが出荷タイプかデバッグタイプか
- ファイルサイズ
- ファイルが作成された日付
- ファイルのパス
他に考慮すべき点:
Microsoft COFF バイナリ ファイル ダンパー(ダンプビン.EXE)
Common Object File Format (COFF) バイナリ ファイルに関する情報を表示します。DUMPBIN を使用すると、COFF オブジェクト ファイル、COFF オブジェクトの標準ライブラリ、実行可能ファイル、およびダイナミック リンク ライブラリ (DLL) を調べることができます。
binwalk
- 指定されたファイルで、さまざまな CPU アーキテクチャに共通する実行可能なオペコードを検索します。バイナリ ファイルから興味深いファイル/データを分析、リバース エンジニアリング、および抽出するための使いやすいツールです。
その他のコマンドについては、以下を確認してください。
答え3
MicrosoftのDUMPBINユーティリティ。
便利なオプションがたくさんありますが、何をしたいかによって異なります。
ただし、無料ではありませんが、Windows SDK で無料で入手できると思います。
答え4
この問題領域を最初に調べたとき、次のような簡単なコマンドを使用すると(Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion
、このSOの質問— すべての実行ファイルで確実に動作しませんでした(空の戻り値)。また、エクスプローラーする特定の実行可能ファイルのプロパティ シートの値を確実に表示できないため、エクスプローラーがプロパティを取得するために行う操作を模倣する 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