У вас есть несколько вариантов:
1) Напишите обработчик корневых структурированных исключений, который обеспечивает уничтожение иконки перед выходом. Это требует некоторых усилий - но вы можете добавить свой собственный обработчик необработанных исключений в Windows, который будет вызываться в случае многих форм «бума», который затем предоставит вам возможность последней очистки.
2) Напишите приложение монитора, которое спит на вашем дескрипторе основных процессов и убивает значок, когда он просыпается (основное приложение умерло). Чтобы этот последний сценарий работал хорошо, вы, вероятно, захотите, чтобы основной процесс НЕ убивал сам значок - или вы могли бы создать способ сообщить приложению монитора, что оно должно выйти без уничтожения значка (оставьте приложение монитора в спящем режиме). как на дескрипторе процесса, так и на именованном событии - и, если его разбудит событие, оно просто умрет без очистки после основного приложения).