Windows 7 tray icons invisible

Taken from the article How to Reset the Notification Area Icons Cache is the file Reset_Notification_Area_Icons_Cache.bat.

You may download the file, but the contents of the file are also reproduced below :

:: Created by: Shawn Brink
:: http://www.sevenforums.com
:: Tutorial:  http://www.sevenforums.com/tutorials/13102-notification-area-icons-reset.html

@echo off
cls
set regPath=HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify
set regKey1=IconStreams
set regKey2=PastIconsStream
set choice=Bad-Response

echo The Explorer process must be killed to reset the Notification Area Icons Cache. 
echo.
echo Please SAVE ALL OPEN WORK before continuing
echo.
pause

echo.
taskkill /IM explorer.exe /F
echo.
FOR /F "tokens=*" %%a in ('Reg Query "%regpath%" /v %regkey1% ^| find /i "%regkey1%"') do goto iconstreams
echo Registry key "IconStreams" already deleted.
echo.

:verify-PastIconsStream
FOR /F "tokens=*" %%a in ('Reg Query "%regpath%" /v %regkey2% ^| find /i "%regkey2%"') do goto PastIconsStream
echo Registry key "PastIconsStream" already deleted.
echo.
goto confirm-restart

:iconstreams
reg delete "%regpath%" /f /v "%regkey1%"
goto verify-PastIconsStream

:PastIconsStream
reg delete "%regpath%" /f /v "%regkey2%"

:confirm-restart
echo.
echo.
echo Windows must be restarted to finish resetting the Notification Area Icons. 
echo.

:wrong 
set /p choice=Restart now? (Y/N) and press Enter:
If %choice% == y goto Yes
If %choice% == Y goto Yes
If %choice% == n goto No
If %choice% == N goto No
set choice=Bad-Response
goto wrong

:Yes
shutdown /R /f /t 00
exit

:No
echo.
echo Restart aborted. Please remember to restart the computer later.
echo.
echo You can now close this command prompt window.
explorer.exe

Detailed description for running this batch file are included in the article.


The following comment by @arielnmz seemed to solve my problem:

did you try removing suspicious applications from startup, not by an antivirus
or anti-malware, but manually with msconfig.exe?

There wasn't anything out of the ordinary in there, but disabling a bunch of them has solved my problems.


You may want to refer to this answer:

Although this may be overkill, I'd not say that there's some malware that specifically prevents you to do that, but maybe an app that interfers with the expected behaviour:

  1. Run a check using anti-malware tools, like Adwcleaner or MalwareBytes, just in case.
  2. Open the msconfig utility: Win+R and execute msconfig.exe.
    • Disable any unwanted applications that run on stratup.
    • On the Services tab, disable any unwanted services that run at startup too. You may want to mark the Hide Microsoft services so that you don't disable anything important accidentally.
    • By default, the msconfig utility marks the disabled services as Disabled, which means that you can't execute them even manually. Alternatively, you can execute the services.msc utility so that you locate such services and change their state to Manual, so they don't run on startup automatically but you'd still be able to start them if you need them.
  3. Reboot and see if something changes, then you can start re-enabling services and apps on startup until you detect which one is causing you trouble.

There are many causes to the behaviour you experiment and these are some steps that may come in handy to detect your issue, but of course it's not the only solution.

I have to add that antivirus software isn't that good when it comes to detecting malware, adware and related, that's why you should run a check with dedicated tools like the ones suggested above.


One thing you can do is write a script to automatically kill and restart explorer.exe and set it to automatically run when a user logs on.

Script (*.bat):

@echo off
taskkill /IM explorer.exe
explorer.exe

To get it to automatically run, open the Windows Task Scheduler, select create task, go to the triggers tab, click new, and select At log on from the top drop-down box. Then, go to the actions tab, click new, and enter the path to the script you created (or just click browse and find it). Give the task a name, and you are done!

If you need more clarification, just ask :D