DLL / EXEの詳細を検査するための素晴らしいコマンドラインの方法は何ですか?


13

ほとんどのWindows実行可能ファイル(DLL、EXE ...)では、バージョンとその他の詳細は、[プロパティ](Alt+ Enter)の[詳細]タブを使用して表示できます。

Windows 7 amd64のshell32.dllの詳細

これを行うコマンドラインの方法もありますか?私は特に製品バージョンに興味がありますが、他にも役立つものがあります。

以下のプロパティが優先順に必要です。

  • パラメータとしてexe / dllパスを受け入れる
  • 標準出力への出力(|パイプ経由で残りを処理できるようにするため)
  • サポートされているすべてのWindows(XP +)でデフォルトで利用可能
  • Windows Vista以降ではデフォルトで利用可能
  • Windows XPでデフォルトで利用可能
  • 商業環境で使用可能
  • 無料ライセンス(GPLライク)
  • ポータブル(つまり、スタンドアロンexe、おそらくDLLが付属)

回答:


9

powershellではget-command "full-path-to-executable" | format-list、トリックを行います。Powershellは、Vista以降のWindowsの新しいコマンドラインであり、XPにインストールできます。


私はあなたのコードを動作させることができません...
soandos

私はまで持っておりget-command "$args[0]" | format-list、それを保存しaaa.ps1て呼び出しましたpowershell -File aaa.ps1 shell32.dllが、何も印刷されません。
Alois Mahdal、2012年

@soandos:get-commandが任意の実行可能ファイルで機能するには、Powershell v2が必要であるようです。
kreemoweet

私はpowershell v2を持っています
soandos 2012年

いいですね、知らなかったので、プロパティウィンドウよりも少し多くの情報が返されます。興味深い情報はFileInfoVersionApplicationInfoオブジェクトのプロパティにカプセル化されています。
mjsr

5

MicrosoftのDUMPBINユーティリティを使用します

便利なオプションがたくさんありますが、何をしたいかによります。

ただし、無料ではありませんが、Windows SDKで自由に入手できると思います。


3
SDKで自由に入手できるのに、なぜ無料ではないのですか?
CJ7 2016年

4

あなたは使用することができます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

XP / 2k / 2003などの古いバージョンのWindows(それでも新しいバージョンで動作します)の場合は、filever.exeツール(exedll.info直接リンクを確認)を使用して、次のようなファイルに関する特定の情報を取得します。

  • ファイルが実行されるプラットフォーム
  • ファイルのバージョン
  • ファイルの属性
  • ファイルタイプ
  • ファイルの言語
  • ファイルが配送タイプかデバッグタイプか
  • ファイルサイズ
  • ファイルが作成された日付
  • ファイルのパス

考慮すべき他のいくつか:

  • Microsoft COFFバイナリファイルダンパー(DUMPBIN.EXE)

    Common Object File Format(COFF)バイナリファイルに関する情報を表示します。DUMPBINを使用して、COFFオブジェクトファイル、COFFオブジェクトの標準ライブラリ、実行可能ファイル、ダイナミックリンクライブラリ(DLL)を調べることができます。

  • binwalk-指定されたファイルで、さまざまなCPUアーキテクチャに共通の実行可能なオペコードを検索します。分析、リバースエンジニアリング、およびバイナリファイルから興味深いファイル/データを抽出するための使いやすいツール。


その他のコマンドについては、次を確認してください。


3
Function GetProductVersion (sFilePath, sProgram)  
Dim objShell, objFolder, objFolderItem, i  
If FSO.FileExists(sFilePath & "\" & sProgram) Then  
    Set objShell = CreateObject("Shell.Application")  
    Set objFolder = objShell.Namespace(sFilePath)  
    Set objFolderItem = objFolder.ParseName(sProgram)  
    Dim arrHeaders(300)  
    For i = 0 To 300  
        arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)  
        'WScript.Echo i &"- " & arrHeaders(i) & ": " & objFolder.GetDetailsOf(objFolderItem, i)  
        If lcase(arrHeaders(i))= "product version" Then  
            GetProductVersion= objFolder.GetDetailsOf(objFolderItem, i)  
            Exit For  
        End If  
    Next  
End If  
End Function  

ソースは、ファイルバージョンを取得できる.vbsファイルへのリンクであり、それを取得して、必要に応じて出力を使用できます。

Windowsのすべてのバージョンが出荷されますが、ライセンスについては不明です。非常に移植性がありますが、exeやDLLは含まれません。


答えは2つありますが、どちらの答えかわかりません。しかし、私はそれらのいくつかを試しました、それらはハードコーディングされたnotepad.exeへのパスを持っているようです。それらをdll / exeへのパスをパラメーターとして受け入れるようにそれらをラップする簡単な方法はありますか?できれば標準出力に出力しますか?
Alois Mahdal、2012年

パスをパラメーターとして取り、製品バージョンが含まれていますGetProductVersion
soandos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.