Hallo liebe C#-Community,
ich habe eine EXE-Datei (A), dessen Icon durch ein Programm wie IconChanger geändert wurde. Diese EXE-Datei kopiert sich selbst durch File.Copy und ist in einem anderen Verzeichnis wieder zu finden. Das geänderte Icon ist natürlich noch vorhanden.
Ich möchte aber, dass die kopierte EXE-Datei (B) wieder das Default-Icon bekommt, welches Windows regulär für Anwendungen vergibt. Ihr wisst schon, welches ich meine.
Wie kann ich den Quellcode der EXE-Datei (A) so gestalten, dass die EXE-Datei (B) nach dem Kopieren wieder das Default-Icon bekommt?
Hier ein Versuch von mir. Es funktionert. Das Icon wird geändert, aber danach ist das Programm nicht mehr verwendbar und folgende Fehlermeldung erscheint:
Fehlermeldung:
"Die Version dieser Datei ist nicht mit der ausgeführten Windows-Version kompatibel. [...]"
Den Rest der Fehlermeldung kennt ihr ja dann bestimmt.
class resource
{
static void Main(string[] args)
{
seticon();
}
public static void seticon()
{
Bitmap bmp = new Bitmap("Path");
Icon.FromHandle(bmp.GetHicon()).Save(new FileStream("CSharp-Community.exe", FileMode.Create));
bmp.Dispose();
}
}
Ich sage schon einmal danke im Voraus und freue mich auf eure Antworten.
Liebe Grüße,
Serun
Hi,
nun ja, du nimmst ein Icon von irgendwo her und speicherst dieses einfach als .exe wieder weg. Dass das nicht gehen kann, sollte klar sein 😃
Mit einfachen mitteln kannst du das nicht ändern, da du an die Resourcentabelle der .exe ran musst. Ich persönlich kenne keinen Weg über c# das zu realisieren. Ggf. nach "modify resource table" oder so suchen. Aber einfach wird es wahrscheinlich nicht.
Gruß
Khalid
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hallo
habs nicht komplett durchgelesen, aber eventuell hilft:
Programmatically change the icon of the executable
weiter.
Wie Khalid aber schon sagte: Einfach oder schön ist das nicht 😉
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck