Funktioniert problemlos bei mir mit dem Code aus
#9.
So bin ich vorgegangen (deine Exe nennen wir mal z.exe):
Delphi-Quellcode:
procedure ChangeIcon;
var
IconA: TSmoGroupIcon;
begin
// Hole die neue Symbolgruppe... hier als Beispiel #2 aus Notepad.exe
if not GetGroupIcon('C:\Windows\System32\Notepad.exe', MakeIntResource(2), IconA) then RaiseLastOSError;
// Speichere die Symbolgruppe in z.exe unter dem Namen "A"
if not SetGroupIcon('D:\z.exe', 'A', IconA) then RaiseLastOSError;
end;
Im Explorer hatte D:\z.exe dann nach wie vor das alte Symbol - wegen des Icon-Caches.
Also habe ich z.exe im Explorer einfach schnell kopiert (Strg+C, Strg+V) und schon wurde bei der Kopie das Notepad-Symbol angezeigt, wie erwartet.