I can swear I wrote an article about this before... But Google denies everything. Still, should have been in the last year and probably on scforum.info... A solution for windows 7 systray not always showing all icons though the programs themselves have been started and are running.
Anyways, I put some scripts together (see
http://scforum.info/index.php/topic,8202.msg20873.html#msg20873) to periodacilly not only refresh the registry (should, in theory, prevent forced OS reboots) but mostly will give the systray a needed kick to forcely show all icons, without restarting explorer.exe!
If you look around on the internet, you will find many detailed solutions, all for Windows XP. Still, it shows you what's going on, thought the shell32.dll patch is only for XP; don't bother looking for Vista or newer...
Main problem and complete solution
2010-10-09 – nars has posted a patcher tool (direct download link, also attached here—see below) that solves the problem even for future versions and makes patching very easy and quick. Thanks a lot, nars!
The main cause of the more common problem is that the systray program is temporarily unable to process icon inclusion requests. An earlier hypothesis, that systray.exe is loaded too late, has been refuted by Thomas Gregory Platt (see his email below).
According to the excellent analysis in the Problem analysis and proposed solution comment by tasmanian this is caused by a timing defect in the Windows function Shell_NotifyIcon in shell32.dll, which has a timeout fixed at 4 seconds. Combined with an unfavorable Windows API message this causes the problem, which befalls many heavily loaded computers that don't have ultra-fast hard disks. Changing the timeout to one minute and removing the unwanted message solves the problem, and in the Complete solution comment user depassp has perfected the procedure of patching shell32.dll to solve the problem, at least until a new version of that DLL is delivered by Microsoft that re-introduces the problem and requires another patch session. In fact, exactly this has happened around July 2010, but the solution is already here: Offsets for NEW 6.0.2900.6018 file by mcrealize, corrected by TeaRex
Unfortunately patching a system DLL is not an entirely simple procedure and can only be done with a certain minimum of computer handling experience, but this is the best we can offer for now.
(
http://winhlp.com/node/16?page=1&cs=2626&cl=1#comment-2155)
I've made a Windows 7 task to automate a working solution from Windows Vista and onwards... Windows 8 task will follow soon.
How to "install"? Download
https://www.box.com/s/j5kpjw8djmxortpb5l43 and follow instructions from Devvie's Choices article, item 9. "CHecKDiSK scripts".
Extract to C:\CHeCKDiSK\files.*
Import task C:\CheCKDiSK\Windows Tasks\System32\Tasks Vista, 7\Keep it fresh!.xml. When applying, enter your username (and password). The XML task remembered my credentials: that won't work for you
Enjoy!
All credentials to the creator of this nifty tool: trayrestore.exe (
Google info)
Devvie
PS: also take a look at my John's Background Switcher program... Still kicks ass