python - pywin32: GetFileVersionInfo vender tilbage 1812

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger pyWin32 modulet som sådan:


import win32api
from win32api import GetFileVersionInfo, LOWORD, HIWORD


def get\_version\_number (filename):
  info = win32api.GetFileVersionInfo(filename,"\")
  ms = info['FileVersionMS']
  ls = info['FileVersionLS']
  return HIWORD (ms), LOWORD (ms), HIWORD (ls), LOWORD (ls)


if \_\_name\_\_ == '\_\_main\_\_':
   print(get\_version\_number ("./aa.txt"))


Fejl:


Traceback (most recent call last):
  File ".file\_filter.py", line 70, in <module>
    print(get\_version\_number ("./aa.txt"))
  File ".file\_filter.py", line 60, in get\_version\_number
    info = win32api.GetFileVersionInfo(filename,"\")
pywintypes.error: (1812, 'GetFileVersionInfo:GetFileVersionInfoSize', ...)


Jeg får ovenstående fejl. Det virker dog fint for følgende fil: "./python.exe".

Bedste reference


Uddrag fra denne reference:


https://msdn.microsoft.com/en-us/library/windows/desktop/ms647003(v=vs.85).aspx[4]



  GetFileVersionInfo tog versionsinformation fra det binære (exe/dll). I øjeblikket spørger den den faste version fra sprogneutral fil (exe/dll) og den ikke-faste del fra mui-filen, fusionerer dem og vender tilbage til brugeren.



Den eneste tilgængelige filtype til GetFileVersionInfo er enten * .exe eller * .dll. Alligevel spørger du mod en * .txt-fil.