Detailinformatioen einer EXE-Datei auslesen

Detailinformatioen einer EXE-Datei auslesen

Beitragvon OLLI_S » 22. Jun 2018, 19:41 Detailinformatioen einer EXE-Datei auslesen

Hallo,

ich würde gerne von einer EXE-Datei alle Detailinformation auslesen, wie beispielsweise
  • Beschreibung
  • Dateiversion
  • Produktname
  • Produktversion
Ich habe allerdings keine Ahnung, wie ich an diese Daten heran komme.
Grundwissen in Pascal ist vorhanden.

Danke für Eure Hilfe!

Gruß

OLLI
OLLI_S
 
Beiträge: 63
Registriert: 17. Jan 2012, 20:55

Beitragvon Mathias » 22. Jun 2018, 20:27 Re: Detailinformatioen einer EXE-Datei auslesen

Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon OLLI_S » 22. Jun 2018, 20:33 Re: Detailinformatioen einer EXE-Datei auslesen

Mathias hat geschrieben:Vielleicht hilft die dies weiter : http://wiki.freepascal.org/Show_Applica ... nd_Company

Perfekt, das ist die Lösung!
Danke!
OLLI_S
 
Beiträge: 63
Registriert: 17. Jan 2012, 20:55

Beitragvon Mathias » 22. Jun 2018, 20:36 Re: Detailinformatioen einer EXE-Datei auslesen

Funktioniert es bei dir nur mit {$R *.res} oder geht es bei dir auch ohne.
Ich habe gerade das Wiki angepasst, weil das {$R *.res} fehlte.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon OLLI_S » 23. Jun 2018, 10:21 Re: Detailinformatioen einer EXE-Datei auslesen

Ich habe es ohne die {$R *.res} übernommen, bei mir funktioniert es.
Was macht eigentlich {$R *.res} ?

Allerdings bekomme ich beim Auslesen der Versionsinformationen bei manchen Anwendungen Fehlermeldungen.
Beim System Explorer (C:\Program Files (x86)\System Explorer\SystemExplorer.exe) bekomme ich folgende Meldung:

Code: Alles auswählen
Projekt GerVersionInfo hat Exception-Klasse >EResourceNotFoundException< ausgelöst mit der Meldung:
Can not find resource: Type = 1, Name = 12, Lang ID = 0000


Das ganze passiert bei
Code: Alles auswählen
FileVerInfo.ReadFileInfo;


Hier mein Code bis zu dem Fehler:
Code: Alles auswählen
procedure TfrmMainForm.GetVersionInfo;
var
  FileVerInfo: TFileVersionInfo;
  AppFileName: String;
 
begin
 
  FileVerInfo := TFileVersionInfo.Create(nil);
 
  // Get the file name (including the file path) from the edit-field
  AppFileName := edtFileName.Text;
 
  // Check if the file name is empty
  if AppFileName = '' then
  begin
    ShowMessage('File Name is empty');
    exit;
  end;
 
  // Check if the file exists
  if not (FileExists(AppFileName)) then
  begin
    ShowMessage('File Not Found:' + #13 + AppFileName);
    exit;
  end;
 
  mmoVersionInfo.Lines.Clear;
 
  try
 
    FileVerInfo.FileName := AppFileName;
    FileVerInfo.ReadFileInfo;
 


Die Variable AppFileName hat den Wert C:\Program Files (x86)\System Explorer\SystemExplorer.exe.
Und meine Prüfung, ob die Datei überhaupt existiert, war ja auch erfolgreich.

Ich verstehe wirklich nicht, warum es bei den meisten Anwendungen problemlos funktioniert, nur bei manchen Anwendungen nicht.

Gruß

OLLI
Zuletzt geändert von OLLI_S am 23. Jun 2018, 10:23, insgesamt 1-mal geändert.
OLLI_S
 
Beiträge: 63
Registriert: 17. Jan 2012, 20:55

Beitragvon m.fuchs » 23. Jun 2018, 10:23 Re: Detailinformatioen einer EXE-Datei auslesen

OLLI_S hat geschrieben:Allerdings bekomme ich beim Auslesen der Versionsinformationen bei manchen Anwendungen Fehlermeldungen.
Beim System Explorer (C:\Program Files (x86)\System Explorer\SystemExplorer.exe) bekomme ich folgende Meldung:

Code: Alles auswählen
Projekt GerVersionInfo hat Exception-Klasse >EResourceNotFoundException< ausgelöst mit der Meldung:
Can not find resource: Type = 1, Name = 12, Lang ID = 0000

Enthält dieses Programm denn überhaupt Versionsinformationen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1971
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 23. Jun 2018, 12:43 Re: Detailinformatioen einer EXE-Datei auslesen

Genau, wegen diesem Fehler musste ich $R einfügen.
Ohne Versionsangabe kommt bei mir einfach 0.0.0.0.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 23. Jun 2018, 14:44 Re: Detailinformatioen einer EXE-Datei auslesen

Mathias, es geht um das Auslesen der Versionsinformationen anderer Programme. Das hat nichts mit {$R *.res} zu tun.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1971
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon OLLI_S » 28. Jun 2018, 21:48 Re: Detailinformatioen einer EXE-Datei auslesen

m.fuchs hat geschrieben:Enthält dieses Programm denn überhaupt Versionsinformationen?

Wenn ich die SystemExplorer.exe mit der rechten Maustaste anklicke und "Eigenschaften" wähle, sehe ich auf dem Reiter "Details" alle Versionsinformationen.
Und genau die werden ausgelesen.
Ich verstehe das nicht...
OLLI_S
 
Beiträge: 63
Registriert: 17. Jan 2012, 20:55

Beitragvon OLLI_S » 10. Jul 2018, 18:21 Re: Detailinformatioen einer EXE-Datei auslesen

Hallo,

ich bin heute wieder zum Code gekommen und wollte mir das Problem noch einmal anschauen.

Da die Exceptions in der folgenden Zeile auftreten:
Code: Alles auswählen
 FileVerInfo.ReadFileInfo;

habe ich in der unit fileinfo einen Breakpoint bei der ersten Codezeile in der procedure ReadFileInfo gesetzt.
Aber die Ausführung stoppt nicht dort.

Also habe ich in dieser Zeile [F4] gedrückt um den Code bis hier auszuführen.
Hier wurde mir aber die Meldung gezeigt, dass fileinfo.pp nicht vorhanden ist.
Leider ist der "Start bis Cursor" jetzt auch ausgegraut, so dass ich es nicht erneut versuchen kann.

Wenn ich es richtig sehe, dann ist die Datei C:\lazarus\fpc\3.0.4\source\packages\fcl-base\src\fileinfo.pp geöffnet.
Sorry, wenn ich mich doof anstelle, aber ich habe jetzt viele Jahre nicht mehr programmiert.

Gruß

OLLI
OLLI_S
 
Beiträge: 63
Registriert: 17. Jan 2012, 20:55

Beitragvon af0815 » 11. Jul 2018, 06:12 Re: Detailinformatioen einer EXE-Datei auslesen

Der FPC ist normalerweise nicht mit Dedugginginformationen kompiliert. Das ist der Grund warum der Debugger dort nicht stoppt/Debuggen kann.

Abhilfe: Suche hier mal nach FPC mit Debugginginfos zu kompilieren. Auch in der Wiki gibts Informationen dazu.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3488
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

porpoises-institution
accuracy-worried