Можно ли изменить значок exe, не перекомпилировав его? - PullRequest
1 голос
/ 03 мая 2010

У меня есть много исполняемых файлов, которые я скомпилировал (давно), для многих из которых у меня сейчас нет исходного кода. Но когда я их скомпилировал, я не добавил для них никаких значков, так что все они выглядят как один и тот же скучный, лысый значок по умолчанию. Итак, мои вопросы,

(1) могу ли я написать программное обеспечение, которое может изменить раздел ресурсов exe и изменить его внешний вид? Если да, может ли кто-нибудь, пожалуйста, указать мне место, где это объясняется? (Я новичок, понятия не имею о формате exe и все) Также интересно постоянно менять иконки, не мучаясь с перекомпиляцией всего лишь ради смены иконки ...

(2) Возникает естественный обратный вопрос: возможно ли аналогичным образом извлечь значок, используемый некоторым файлом, и использовать его для другого файла? (Если так, пожалуйста, укажите мне место, где я могу получить некоторые детали.

Я разработчик на C / C ++ и ищу решение на платформе Windows ...

С уважением, Микроядра

Ответы [ 4 ]

9 голосов
/ 03 мая 2010

Значок, используемый для исполняемого файла, является ничем иным, как первым ресурсом ICON, обнаруженным в файле EXE. Вы можете использовать инструмент типа ResHack для извлечения значков из существующих двоичных файлов, и (я думаю) вы также можете использовать его для изменения значков, прикрепленных к определенному ресурсу.

5 голосов
/ 03 мая 2010

Можно читать и записывать ресурсы из файла EXE или DLL. Чтение ресурсов легко (ish) - просто используйте LoadLibraryEx (LOAD_AS_DATA_FILE), чтобы загрузить его, затем вы можете перечислить ресурсы, используя стандартные API ресурсов. Все это задокументировано в MSDN.

Запись ресурсов также можно выполнить с помощью UpdateResource API и связанных функций.

Вы должны иметь в виду, что изменение ресурсов чьего-либо другого EXE-файла сделает недействительной любую подпись. Кроме того, в зависимости от ресурсов ОС рискованно - известно, что Windows удаляет ресурсы без предупреждения (поскольку они недокументированы). Копирование ресурсов также может быть нелегальным (хотя IANAL).

1 голос
/ 03 мая 2010

Насколько я знаю, вы можете открыть EXE-файл в Visual Studio и редактировать ресурсы в живом EXE-файле.

0 голосов
/ 03 мая 2010

Это возможно сделать. IIRC, Библиотекарь Microangelo может сделать это.

...