Lee las soluciones:
Suponiendo que sepas el nombre o identificador del recurso de icono que quieres reemplazar, es pan comido, de lo contrario tienes que enumerar los recursos de icono (ya te indiqué la documentación de MSDN para aprender a enumerar recursos) puesto que no siempre el icono principal va a tener el mismo identificador, ni va a usar un identificador en vez de un nombre.
De todas formas siempre que utilices correctamente los parámetros de Resource Hacker no vas a tener problemas con él.
EDITO:Es algo que requiere mucho P/Invoking, si le vas a dar poca reusabilidad al código entonces casi mejor sería preferible utilizar cualquier herramienta por linea de comandos tipo Resource Hacker.
Cuando dije de usar
Resource Hacker no recordaba que existía esta librería open-source para .NET, la cual tenía guardada por ahí pero creo que nunca le llegué a usar:
Puedes descargar dicha librería y usarla tal cual, o puedes destripar del código fuente lo que no necesites y copiar de esta clase solamente las estructuras nativas o P/Invoking necesario para tus fines:
( para reemplazar un icono solo necesitas las definiciones de las funciones
BeginUpdateResource,
UpdateResource y
EndUpdateResource; para reemplazar un grupo de iconos necesitas también usar la estructura
GRPICONDIR y
GRPICONDIRENTRY)
Ejemplo de uso:
Como ya dije creo que nunca le llegué a usar (yo hago este tipo de modificaciones con mis propios wrappers de las funciones nativas de Windows, algunas ya mencionadas), así que no puedo recomendar esa librería, pero creo que usar
Resource Hacker en general debería aportar mayor seguridad contra posibles errores de cualquier tipo... simplemente por popularidad, veteranía/experiencia y profesionalidad del autor.
Saludos.