C/C++: Frage bzgl. FileVersion von Dateien und Konvertierung

phazer

Ensign
Registriert
Jan. 2008
Beiträge
165
Hallo C++ Profis,

es geht um folgendes:

Ich möchte die Versionsnummern von Treiber Dateien (.sys) vergleichen.
Die Dateiversion (FileVersion) bekomme ich mittels der Funktion 'GetFileVersionInfo'.
Das Resultat landet dann in einer ULARGE_INTEGER Variable.
Den Vergleich mache ich dann so:
if (FileVersion1.QuadPart >= FileVersion2.QuadPart) {....}
(möglicherweise zu umständig oder nicht ganz korrekt?)
Das funktioniert aber soweit ganz gut.

Nun zum Problem:
Ich muss für einige Dateien die FileVersion bzw. ProductVersion aus der StringFileInfo
der Datei auslesen. Das funktioniert soweit auch ganz gut, nur dann habe ich die
Versionsnummer ja als WCHAR String. Jetzt weiss ich nicht, wie ich den String konvertieren
muss/kann, so dass ich den Vergleich zu dem ULARGE_INTEGER machen kann.

Danke
phazer
 
sind die versionen nicht normalerweise im format X.Y.Z...? Wie willste das zu ner Integer konvertieren? Jeden Part einzeln? Oder hast du irgendwelche speziell formatierten Versionsnummern?

Generell kann man sagen, dass man nen Unicode String (WCHAR) über _wtoi() zu Integer konvertieren kann. Mit Large Integer (64-bit) ist es ein bisschen komplizierter. Dafür kann man wscanf() benutzen. Dies ist aber bitte mit Vorsicht zu genießen. Kann bei unsachgemäßer Nutzung zu nem Buffer Overflow führen!!
 
Zurück
Oben