Как установить версию файла во время выполнения для файла .sys, который создает моя программа - PullRequest
0 голосов
/ 09 октября 2019

Я хочу, чтобы моя программа на С ++ создала пустой файл драйвера .sys, с указанием «Версия файла» в сведениях о файле в Windows. Файлу больше ничего не нужно, просто «Версия файла». Я также хочу иметь возможность изменить версию файла или создать новый файл с другой версией файла. Я использую другую программу для чтения этой версии файла.
Как мне поступить? Есть ли простой способ, который не включает весь процесс создания драйверов?

1 Ответ

0 голосов
/ 12 октября 2019

Ну, я не смог найти функцию, которая устанавливает версию файла, только получает. Я закончил тем, что создал драйвер hello world и установил версию этого файла с помощью метода, который связывал Jesper (который является препроцессором). Это скомпилирует .sys с номером версии.

Я проанализировал файл .sys и нашел несколько мест с информацией о версии. Один из них в DWORD little-endian, это то, что Windows захватывает для деталей файла. Другой очень близок к нему, хранится в виде строки. Я не уверен, с какой программой я взаимодействую, поэтому я меняю обе. Изменение версии строки не меняет версию файла в деталях файла. Файлы .sys, похоже, имеют чувствительную файловую структуру. Если вы измените что-либо, не связанное с версией файла, Windows больше не будет правильно анализировать файл для данной версии.

Вот биты, которые я изменил. Версия строки увеличивается на единицу, потому что я тестировал.

...