Benutzer mit den meisten Antworten
Daten der Versionsinfo einer Resource ausfragen

Frage
Antworten
-
Ja Du öffest die Datei dessen Resourcen Du untersuchen möchtest mit LoadLibrary (auch EXE files!). Mit dem von LoadLibrary zurückgegebenen Handle kannst Du dann auf die Resourcen der Executable zugreifen, darunater auch die VERSIONINFO.
An sonsten ist hier eingentlich das wichtige dann weiter gepostet:
http://www.c-plusplus.de/forum/207242
Du kannst ebenso über GetFileVersionInfo / GetFileVersionInfoSize / VerQueryValue die resource abfragen. Dann kannst Du direkt auf eine Datei zugreifen, ohne LoadLibrary. Beide Versionen funktionieren. Vorteil dieser Methode ist vielleicht, dass Du die Datei nicht in dne Speicher lädst, sondern nur die Resource ausgelesen wird.
Wenn Du über die VERSIONINFO resource nichts weissst, und alles auslesen möchtest, dann wird es schwieriger. Du mußt dich dann selber dicht die Strukturen durchhangeln, und die Werte suchen. Der Aufwand lohnt aber meiner Meinung nach eher nicht. Ich persönlich "untersuche" nur die VersionInfo resourcen mir bekannter Module (sprich zu 99% aus den eigenen Software Paketen) um die Versionsnummern etc. zu ermitteln und ggf. anzuzeigen.
Hier noch ein paar (zugegeben alte aber noch immer noch passende) Links zu Beispielen:
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c217/Get-VersionInfo-from-resource-file.htm
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c269/Executable-file-version-information.htm
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c319/Get-VersionInfo-from-resource-file-2.htm- Als Antwort vorgeschlagen Martin RichterModerator Mittwoch, 3. August 2011 06:26
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 12. August 2011 12:41
Alle Antworten
-
Ja Du öffest die Datei dessen Resourcen Du untersuchen möchtest mit LoadLibrary (auch EXE files!). Mit dem von LoadLibrary zurückgegebenen Handle kannst Du dann auf die Resourcen der Executable zugreifen, darunater auch die VERSIONINFO.
An sonsten ist hier eingentlich das wichtige dann weiter gepostet:
http://www.c-plusplus.de/forum/207242
Du kannst ebenso über GetFileVersionInfo / GetFileVersionInfoSize / VerQueryValue die resource abfragen. Dann kannst Du direkt auf eine Datei zugreifen, ohne LoadLibrary. Beide Versionen funktionieren. Vorteil dieser Methode ist vielleicht, dass Du die Datei nicht in dne Speicher lädst, sondern nur die Resource ausgelesen wird.
Wenn Du über die VERSIONINFO resource nichts weissst, und alles auslesen möchtest, dann wird es schwieriger. Du mußt dich dann selber dicht die Strukturen durchhangeln, und die Werte suchen. Der Aufwand lohnt aber meiner Meinung nach eher nicht. Ich persönlich "untersuche" nur die VersionInfo resourcen mir bekannter Module (sprich zu 99% aus den eigenen Software Paketen) um die Versionsnummern etc. zu ermitteln und ggf. anzuzeigen.
Hier noch ein paar (zugegeben alte aber noch immer noch passende) Links zu Beispielen:
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c217/Get-VersionInfo-from-resource-file.htm
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c269/Executable-file-version-information.htm
http://www.codeguru.com/cpp/misc/misc/versioninfo/article.php/c319/Get-VersionInfo-from-resource-file-2.htm- Als Antwort vorgeschlagen Martin RichterModerator Mittwoch, 3. August 2011 06:26
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 12. August 2011 12:41
-
Und eigentlich ein Klassiker als Artikel von Paul DiLascia:
http://www.microsoft.com/msj/0498/c0498.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de