Eigenschaften .exe Datei auslesen



  • Rechtklick auf eine exe-Datei->Eigenschaften->Reiter "Details"-> Diese Informationen möchte ich auslesen.



  • earthhero schrieb:

    Rechtklick auf eine exe-Datei->Eigenschaften->Reiter "Details"-> Diese Informationen möchte ich auslesen.

    Dort steht inder Regel aber nichts über den verwendeten Compiler und dessen Version ...



  • Untersuch die Datei mit einem Hex Editor und schreib dir eben deine eigene Funktion.


  • Mod

    -.- schrieb:

    Untersuch die Datei mit einem Hex Editor und schreib dir eben deine eigene Funktion.

    Reverse Engineering sollte nicht der erste Ansatz sein. Es gibt vermutlich sehr einfache Lösungen für das Problem des Threaderstellers, wenn er sich nur vernünftig ausdrücken würde. Die bereits gemachten Vorschläge könnten bereits passen, man weiß es nicht.



  • earthhero schrieb:

    ich möchte zum Anzeigen der Compilerversion gerne aus den Eigenschaften der .exe-Datei die Version auslesen. Weiß einer ob das so einfach möglich ist?

    Nein, die Compilerversion steht nicht in der .exe-Datei. Es gibt ein älteres Programm, dass die Bestimmung des Compilers durch einen Signaturcheck versucht (ähnlich wie ein Virenscanner):

    http://www.ntcore.com/pedetective.php

    Es gibt eine Vielzahl von Programmen, die die Informationen aus einer PE-Datei herausfiltern und anzeigen, z.B.:

    http://wjradburn.com/software/ (dort PEview herunterladen)

    Dazu muss man aber die PE-Spezifikation kennen:

    http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx

    Und damit sind wir beim Google-Stichwort: "PE" oder "Portable Executable".

    viele grüße
    ralph



  • Also, wir haben ein Keilprojekt für ein XC161 Board und wollen in einem makefile die aktuelle Compilerversion eintragen. Also nicht hart reincoden sondern dynamisch. Unsere Idee war halt nun die Informationen aus den Eigenschaften der .exe Datei. Da dort die Version bei uns zu finden ist. Andere Lösungen sind uns aber genauso willkommen.


  • Mod

    Ihr wollt, dass der Compiler euch seine Version mitteilt? Das sollte im Handbuch stehen. Höchstwahrscheinlich so etwas wie "compileraufruf -v" beim Kommandoaufruf oder "__VERSION__" als Makro zur Compilezeit.



  • SeppJ schrieb:

    Ihr wollt, dass der Compiler euch seine Version mitteilt? Das sollte im Handbuch stehen. Höchstwahrscheinlich so etwas wie "compileraufruf -v" beim Kommandoaufruf oder "__VERSION__" als Makro zur Compilezeit.

    Besten Dank



  • So nun habe ich die Predefined Macros vom Compiler gefunden:
    http://www.keil.com/support/man/docs/c166/c166_pp_predefmacroconst.htm

    Einfache Nutzung von _C166_ gibt keine Ausgabe

    COMVER=__C166__ ist momentan die nicht funktionierende Zuweisend
    (Ausgabe _C166_)

    Das _C166_ wird nicht durch die Version ersetzt.

    Was mache ich falsch?

    Hinweis: keine .c Datei sondern make-file



  • Lass doch dein Makefile durch den Präprozessor deines Compilers laufen. 😉

    Aber wahrscheinlich ist es besser im Makefile einen C-Quelltext, der __C166__ ausgibt, zu kompilieren. Dann muss nur noch die Ausgabe eingelesen und an COMVER zugewiesen werden. Wie einfach das ist, hängt von den Features deines make ab.


Anmelden zum Antworten