Dookie hat geschrieben:wenn jedes Zeichen aus 2 Byte besteht, dürfte es sich um "utf-16" handeln.
Das hatte ich schon mal versucht, aber das funktionierte nicht richtig...
Allerdings, hab ich hier eine kleine Schäbige Variante gebaut:
Code: Alles auswählen
FileHandle = open( "c:\\Notepad.exe", "rb" )
RAWdata = FileHandle.read().replace("\x00","")
FileHandle.close()
print re.findall("CompanyName([A-Za-z ]+)", RAWdata )
print re.findall("FileDescription([A-Za-z ]+)", RAWdata )
print re.findall("FileVersion([\w. ]+)", RAWdata )
print re.findall("InternalName([A-Za-z ]+)", RAWdata )
Ergebnis:
Code: Alles auswählen
['Microsoft Corporation']
['Editort']
['5.1.2600.2180 ']
['Notepad']
Das dumme ist nur, das bei der Verionsinformation in Dateien, die Elementnamen ( bsp. CompanyName, FileDescription usw.) nicht "genormt" sind...
Ich denke nur Dateiversion, Beschreibung und Copyright sind fest drin, also zumindest macht das den Anschein, wenn man sich das Eigenschaft/Version-Kontextmenü zu einer Datei anschaut... Und die drei angaben würden für mich eigentlich reichen... Aber wenn man schon mal dran ist...