Код: Выделить всё
FileVersionInfo.GetVersionInfoМы столкнулись с .exe, в котором мы могли увидеть файл свойства в разделе свойств, но GetVersionInfo() не смог их прочитать.
При создании этого .exe-файла использовался Pyinstaller.
например
Код: Выделить всё
VSVersionInfo(
ffi=FixedFileInfo(
filevers=(1, 2, 3, 4),
prodvers=(1, 2, 3, 4),
mask=0x3f,
flags=0x0,
OS=0x40004,
fileType=0x1,
subtype=0x0,
date=(0, 0)
),
kids=[
StringFileInfo(
[
StringTable(
u'040904B0',
[StringStruct(u'CompanyName', u'Your Company Name'),
StringStruct(u'FileDescription', u'Description of your program'),
StringStruct(u'FileVersion', u'1.2.3.4'),
StringStruct(u'InternalName', u'yourprogram'),
StringStruct(u'LegalCopyright', u'© Your Company Name. All rights reserved.'),
StringStruct(u'OriginalFilename', u'yourprogram.exe'),
StringStruct(u'ProductName', u'Your Product Name'),
StringStruct(u'ProductVersion', u'1.2.3.4')])
]),
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
]
)
Мы смогли прочитать свойства файла, когда использовали version.dll методы GetFileVersionInfo() и VerQueryValue().
Мы пытаемся избегать этого подхода, поскольку он непрост.
Обновление 1 – 09.02.2024
[*]Я использую .Net Framework 4.8
< li>Я вижу все свойства файла из проводника
[*]Я использую GetFileVersionInfo() следующим образом
если (GetFileVersionInfo(filePath, handle, size, buffer))
{
if (VerQueryValue(buffer, @"\StringFileInfo\040904B0" + propertyName, out IntPtr ptr, out uint len))
{
string propertyValue = Marshal.PtrToStringAuto(ptr);
}
[*]Я запускаю код в ОС Windows 10
Подробнее здесь: https://stackoverflow.com/questions/789 ... ersioninfo
Мобильная версия