Changer l’icône exécutable via ilasm

J’ai une application d’installation avec un fichier .resx incorporé avec certaines informations, telles que le nom du serveur, le port, le mot de passe, etc. Cela fonctionne très bien j’utilise ildasm pour désassembleur et remplace le fichier resx, puis j’utilise ilasm pour créer .exe à nouveau. Mais après ce processus, le fichier .exe a perdu notre icône, plaçant celui par défaut à sa place.

Je n’arrive pas à trouver un moyen de changer l’icône par défaut.

Merci

Vous manquez un détail assez obscur dans un programme C #. L’exécutable généré par le compilateur contient également des ressources non gérées . Requis parce que Windows ne sait rien des ressources gérées. C’est quelque chose que vous pouvez voir avec Visual Studio. Utilisez Fichier + Ouvrir + Fichier et sélectionnez un fichier .exe généré par le compilateur C #. Édition RTM requirejse, cela ne fonctionne pas pour Express.

Vous verrez au moins 3 nœuds pour votre programme:

  • RT_MANIFEST contient le manifeste de l’exécutable. Très important sur les versions ultérieures de Windows, il déclare le programme compatible avec UAC. Cela empêche Windows de traiter votre programme comme un programme Windows antérieur auquel il faut mentir lorsqu’il fait des choses UAC verboten comme essayer d’écrire des fichiers dans des répertoires protégés et essayer de créer des clés de registre dans HKLM. Le contenu du manifeste est celui par défaut dans la plupart des programmes. Vous pouvez en obtenir un personnalisé avec le modèle d’élément de projet “Fichier du manifeste d’application”.

  • “Version” contient la ressource de version pour l’exécutable. Il contient les informations que vous voyez lorsque vous regardez les propriétés de l’exécutable avec l’Explorateur Windows. Son contenu est généré automatiquement à partir des atsortingbuts [assembly:] dans votre fichier de code source AssemblyInfo.cs.

  • “Icône” contient la ressource icône pour votre programme. Celui que vous n’avez plus.

Vous devrez utiliser l’option / resource pour ilasm.exe pour incorporer ces ressources non gérées dans l’exécutable corrigé. Cela nécessite un fichier .res, la version compilée des ressources non gérées, produite par l’outil SDK Windows rc.exe. Notez comment cela est également exposé dans l’onglet Projet + Propriétés, Application, bouton d’option Fichier de ressources.

Vous ne pouvez pas ignorer cette exigence, vous pouvez vivre sans la ressource Icon mais pas le manifeste, surtout pas dans un programme d’installation. Extraire le fichier .res de l’exécutable d’origine va être difficile, à peu près sûr que ildasm.exe ne supporte pas sa décompilation. Si un outil tel que Resource Hacker ne le fait pas, vous devrez créer un fichier .res pour votre programme. Ou passez en revue la sagesse d’utiliser ildasm.exe pour faire ce que vous vouliez faire.