Was sind einige nette Befehlszeilenmethoden, um DLL / EXE-Details zu überprüfen?

13

Bei den meisten ausführbaren Windows-Dateien (DLL, EXE ...) können Version und andere Details auf der Registerkarte "Details" unter "Eigenschaften" ( Alt+ Enter) angezeigt werden .

Details zu shell32.dll von Windows 7 amd64

Ich frage mich: Gibt es auch eine Kommandozeilenmethode, um dies zu tun? Ich interessiere mich besonders für die Produktversion, aber auch andere Dinge könnten nützlich sein.

Folgende Eigenschaften sind in der Reihenfolge ihrer Priorität erwünscht:

  • Akzeptieren Sie den Pfad exe / dll als Parameter
  • Ausgabe auf Standardausgabe (damit Sie den Rest per |Pipe verarbeiten können)
  • Standardmäßig verfügbar in allen unterstützten Windows (XP +)
  • Standardmäßig in Windows Vista + verfügbar
  • Standardmäßig in Windows XP verfügbar
  • im kommerziellen Umfeld verwendbar
  • kostenlose Lizenz (GPL-ähnlich)
  • tragbar (dh eigenständige Exe, möglicherweise zusammen mit DLL)
Alois Mahdal
quelle
Dies wurde bereits im Stapelüberlauf gefragt: Befehlszeilentool zum Speichern der Windows-DLL-Version?
Alois Mahdal

Antworten:

9

In Powershell get-command "full-path-to-executable" | format-listwürde der Trick tun. Powershell ist die neue Befehlszeile für Vista und höher. Windows kann unter XP installiert werden.

kreemoweet
quelle
Ich kann Ihren Code nicht zum
Laufen bringen
Ich bin so weit gekommen, wie get-command "$args[0]" | format-listich gespeichert aaa.ps1und angerufen habe, powershell -File aaa.ps1 shell32.dllaber das druckt nichts.
Alois Mahdal
@soandos: Es scheint, dass Powershell v2 erforderlich ist, damit get-command mit beliebigen ausführbaren Dateien funktioniert.
Kreemoweet
Ich habe Powershell v2
Soandos
schön, das wusste ich nicht, es gibt sogar ein bisschen mehr Informationen als das Eigenschaftsfenster. Die interessanten Informationen sind in der FileInfoVersionEigenschaft des ApplicationInfoObjekts enthalten.
mjsr
5

Verwenden Sie das DUMPBIN-Dienstprogramm von Microsoft .

Es gibt viele nützliche Optionen, es hängt jedoch davon ab, was Sie tun möchten.

Es ist jedoch nicht kostenlos, aber ich glaube, dass es mit Windows SDK frei erhältlich ist.

wizzard0
quelle
3
Warum ist es nicht kostenlos, wenn es mit dem SDK frei erhältlich ist?
CJ7
4

Sie können ein sigcheck.exetragbares Tool verwenden, das Teil der Sysinternals Suite ist , z

$ 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

Verwenden Sie für ältere Windows-Versionen wie XP / 2k / 2003 (es funktioniert immer noch in neuen Versionen ) das filever.exeTool (überprüfen Sie den direkten Link unter exedll.info ), um spezifische Informationen zu einer Datei zu erhalten, z.

  • Die Plattform, auf der die Datei ausgeführt wird
  • Die Version der Datei
  • Die Attribute der Datei
  • Der Dateityp
  • Die Sprache der Datei
  • Gibt an, ob es sich bei der Datei um einen Versandtyp oder einen Debug-Typ handelt
  • Die Dateigröße
  • Das Datum, an dem die Datei erstellt wurde
  • Der Pfad der Datei

Einige andere zu berücksichtigen:

  • Der Microsoft COFF Binary File Dumper (DUMPBIN.EXE)

    Zeigt Informationen zu COFF-Binärdateien (Common Object File Format) an. Mit DUMPBIN können Sie COFF-Objektdateien, Standardbibliotheken von COFF-Objekten, ausführbare Dateien und DLLs (Dynamic Link Libraries) untersuchen.

  • binwalk- Durchsuchen Sie die angegebenen Dateien nach ausführbaren Opcodes, die einer Vielzahl von CPU-Architekturen gemeinsam sind. Einfach zu verwendendes Tool zum Analysieren, Reverse Engineering und Extrahieren interessanter Dateien / Daten aus Binärdateien.


Weitere Befehle finden Sie unter:

Kenorb
quelle
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  

Quelle ist ein Link zu einer .vbs-Datei, die die Dateiversion für Sie abrufen kann. Sie können diese verwenden und die Ausgabe verwenden, wie Sie möchten.

Schiffe werden alle Versionen von Windows, nicht sicher über die Lizenz, sehr portabel, aber nicht exe oder DLL.

Soandos
quelle
Da gibt es ein paar Antworten, ich bin mir nicht sicher, welche du meinst. Ich habe jedoch einige von ihnen ausprobiert, sie scheinen einen Pfad zu notepad.exe zu haben, der fest codiert ist. Gibt es eine einfache Möglichkeit, sie so zusammenzufassen, dass sie den Pfad zu dll / exe als Parameter akzeptieren? Vorzugsweise auf Standardausgabe ausgeben?
Alois Mahdal
Es nimmt einen Pfad als Parameter und die Produktversion ist inGetProductVersion
soandos