Okay, I found this out a while ago.
When a portable application such as Pidgin or Miranda runs, windows will store the settings for the behavior of the system tray icon [Always Show, Always Hide, Hide when Inactive] in the registry. However, when the program closes, these settings are kept and will be displayed under "Past Items" in the customize notifications part of the Taskbar & Start Menu Properties. This exposes all the applications which use system tray icons, that have previously been running on the computer. *gasps*
Fortunately, Microsoft has a solution for this issue:
To clear the Past Items list, perform the following steps:
- Delete the IconStreams and PastIconsStream values from the following registry key using regedit.exe:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify - Open Task Manager, click the Processes tab, click Explorer.exe, and then click End Process.
- In Task Manager, click File, click New Task, type explorer, and then click OK.
Would there be a way to automate this process by backing up the registry values and copying the user's custom ones in instead? The only thing left to automate would be the restart of explorer. Is it possible to stop and restart a process (eg. explorer.exe) using NSIS (or AutoIt, possibly)? This would also allow a user to take those icon behavior settings around to other computers, and would conceal which apps they were using.
This is just an idea, I don't know if it would work.
Any more ideas/suggestions?