C#. Изменение информации о файле.

393
06 апреля 2017, 16:48

Как изменить информацию о exe версию файла, версию продукта? К примеру изменить дату создания можно через IO.File.SetCreationTime, а как быть с остальной информацией?

P.S. Нужно изменить у скомпилированного файла, а не до его сборки.

Answer 1
  1. Воспользуйтесь низкоуровневыми вызовами Win32 API - подробнее по ссылке
  2. Можно также использовать высокоуровневую обёртку над этими вызовами, которая распространяется в виде подключаемого NuGet-пакета:

    Install-Package Vestris.ResourceLib

Пример использования этой библиотеки:

  • Получение информации о ресурсах dll или exe

    string filename = "ConsoleApp1.exe"; // path to dll or exe
    VersionResource vr = new VersionResource();
    vr.LoadFrom(filename);
    StringFileInfo sfi = (StringFileInfo)vr["StringFileInfo"];
    foreach (var stringTableEntry in sfi.Default.Strings)
    {
        Console.WriteLine($"{stringTableEntry.Value.Key} = {stringTableEntry.Value.StringValue}");
    }
    

    //output:

    Comments = 
    CompanyName = 
    FileDescription = ConsoleApp1
    FileVersion = 1.0.0.0
    InternalName = ConsoleApp1.exe
    LegalCopyright = Copyright ©  2017
    LegalTrademarks = 
    OriginalFilename = ConsoleApp1.exe
    ProductName = ConsoleApp1
    ProductVersion = 1.0.0.0
    Assembly Version = 1.0.0.0
    

  • Запись изменений обратно в файл сборки

    sfi["CompanyName"] = "New company name";
    sfi["ProductVersion"] = "1.1.1.2";
    sfi["LegalCopyright"] = "New copyright";
    vr.SaveTo(filename);
    

Остальная документация тут

READ ALSO
Как в Task реализовали Wait()?

Как в Task реализовали Wait()?

Я сомневаюсь, что TaskWait() внутри имеет цикл while

221
Редактирование DataGridView

Редактирование DataGridView

Не могу отредактировать ячейки из DataGridView хотя ReadOnly = False; Заполняю грид так :

274
Что такое IDisposable простыми словами [дубликат]

Что такое IDisposable простыми словами [дубликат]

На данный вопрос уже ответили:

239
Получить тип класса по его имени

Получить тип класса по его имени

Как получить тип класса по его имени?

311