Wie kann ich die Versionsinformationen einer PE EXE / DLL-Datei anzeigen?


31

In Windows gibt es eine Seite mit Versionsinformationen in einem Fenster mit Eigenschaften für ausführbare Dateien / Bibliotheksdateien. Wie kann ich diese Informationen in Ubuntu anzeigen?


2
Meinen Sie damit, wie Sie solche Informationen aus Linux-Binärdateien / Bibliotheken oder Windows-EXE / DLL mit einem Linux-Dienstprogramm anzeigen können?
João Pinto

1
Wie ich im Fragentitel klar angegeben habe, meine ich PE (Windows) -EXE- und -DLL-Dateien (zum Anzeigen natürlich mit einem Linux-Dienstprogramm).
Ivan

Antworten:


-1

Möglicherweise müssen Sie einen PE-Datei-Viewer eines Drittanbieters installieren, z. B. http://www.ucware.com/apev/index.htm


Gibt es nicht ein natives Linux-Tool dafür?
Ivan


7
25 US-Dollar für einen Datei-Informations-Viewer? Ernst?
Mechanische Schnecke

5
Hinweis für Besucher nach dem 5. April 2013: Diese Software wurde anscheinend eingestellt und ist vom Entwickler nicht mehr erhältlich.
Moshe Katz

29

Ich arbeite in einem Tool namens pev , um Informationen über PE-Dateien in der Befehlszeile abzurufen.

Die Dateiversion kann mit folgender -pOption abgerufen werden :

pev -p program.exe

pev ist auf Ubuntu im pevPaket enthalten .


3
@Ivan Sie könnten stattdessen diese Antwort akzeptieren.
Russell Silva

Diese Anleitung ist veraltet . Vielleicht möchten Sie sie aktualisieren.
Ploni

11

Aus dem gnome-exe-thumbnailervon Scott Ritchie vorgeschlagenen Drehbuch:

wrestool --extract --raw --type=version inputfile.exe

extrahiert die Versionsinformationen und druckt einige Binärdaten, die mit UTF-16-Text gemischt sind. Das Skript konvertiert ihn in lesbaren Text, indem es ihn weiterleitet:

tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'

Der Gesamtbefehl lautet dann wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'.


+1 wrestoolwird von dem icoutilPaket bereitgestellt, das seit jeher als Standard-Debian-Paket verfügbar ist.
Tripleee

Sie können es einfacher machen, indem Sie es einfach | hexdump -C
durchleiten

In Ubuntu 18.04 ist es im icoutilsPaket enthalten.
Bjorn Reppen

6

Als Alternative zur Verwendung von tr und sed zum Parsen der Ausgabe der @ mechanical-snail-Lösung finden Sie hier eine GNU- Strings- und eine GNU- grep- Version:

$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1

FileVersion
Release 0.65
ProductVersion
Release 0.65

AKTUALISIEREN:

Eine andere Alternative ist eine neuere Version von exiftool von Phil Harvey (sie basiert auf Perl und ist unter Linux einfach zu installieren, wenn Ihre Distribution es nicht hat, auch für Mac und Windows verfügbar). Es hat viele Formatierungsoptionen.

# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe

File Version                    : Release 0.67
Product Version                 : Release 0.67

Welches Paket in Ubuntu / Debian hat exiftool? Sieht aus wie libimage-exiftool-perl?
Xen2050

Ich lade einfach den Quellcode herunter und erstelle ihn lokal. Laden Sie die Datei tar.gz von der Website herunter (der Link "Download Version xx.yy" oben in owl.phy.queensu.ca/~phil/exiftool ), extrahieren Sie die Dateien und lesen Sie den Abschnitt INSTALLATION in der README-Datei Wie man es mit Perl erstellt und dann in / usr / local / bin
dcg installiert

4

Wenn Sie das gnome-exe-thumbnailerPaket installieren , können Sie sich einfach die Versionsnummer in ansehen nautilus.

Der Code für die manuelle Ausführung ist in verfügbar /usr/bin/gnome-exe-thumbnailer.sh


@ Scott .. Danke. es funktioniert ... der relevante Code ist sehr einfach in einem anderen Skript zu verwenden ... Ich gehe davon aus, dass Sie mit "Sie können einfach die Versionsnummer in Nautilus anzeigen" meinen , dass die Versionsnummer in die .exe gepfropft erscheint icon in Nautilus .. eine interessante Idee .. Ich persönlich verwende selten die Icon-Ansicht, aber der Code-Ausschnitt ist großartig für mich ..
Peter.O

-1

Ich habe gerade selbst herausgefunden, wie ich mit den Informationen ein schönes Python-Diktat erstellen kann (ich habe mich umgesehen und bin aus irgendeinem Grund hier gelandet ) und möchte meine Methode hier vorstellen :
Github Gists - spookyahell / exe2version_info.py

'''Licensed under the MIT License :)'''

import pefile
import pprint
pe =  pefile.PE('example.exe')


string_version_info = {}

for fileinfo in pe.FileInfo[0]:
    if fileinfo.Key.decode() == 'StringFileInfo':
        for st in fileinfo.StringTable:
            for entry in st.entries.items():
                string_version_info[entry[0].decode()] = entry[1].decode()

pprint.pprint(string_version_info)

Ich lizenziere es unter der MIT-Lizenz ... kann jeder, der das Bedürfnis hat, nützliche Skripte oder andere Dinge damit zu erstellen ...

Eine Beispielimplementierung dieser Methode in einem anderen Skript finden Sie unter Github Gists - spookyahell / peinfo.py ...


Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Kevin Bowen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.