10

This has happened a few times now, but I've never taken the time to see if there's a solution to this problem. When explorer.exe crashes (due to, say, opening the Recycle Bin after throwing away a lot of files and killing the hanging Windows Explorer), some icons in the system tray don't show up, even though the programs are running.

Closing and starting the program that the missing icon belongs to (say, Spotify) restores the icon. Does anyone know why this happens, and if there's a way to restore the missing icons without having to restart the programs involved?

5
  • If a program has an option to disable the tray icon, toggling this option will probably work. But I'd recommend that you reboot whenever Explorer crashes, it's the only way to make sure everything is back to normal. Nov 6, 2011 at 22:07
  • 3
    Harry is right, but you could simply do a Log off and Log On again to solve it as well, which is faster than a full reboot. Nov 7, 2011 at 1:20
  • @Scyclone0044: you're so right. +1 Nov 7, 2011 at 20:38
  • 1
    I have the same problem with Windows 10 and programs like "TeamCity Tray Notifier" or "Thunderbird" with addon "Firetray". Any ideas how to fix this permanently? Logging on again or restarting is not what i had in mind. Sep 15, 2016 at 13:49
  • @FredericLeitenberger, to fix it permanently you need to fix whatever the problem is that is causing Explorer to crash. Sep 8, 2017 at 23:43

3 Answers 3

8

When the program starts up is usually the time that it registers itself with Explorer (and puts its icon in the system tray) and I believe that while running a program can update its icon reasonably often but if they do not request an update or re-register themselves after a crash then they will not appear again.

I would expect that the programs that reappear after an explorer crash are written by developers whose machines were unstable in a similar way to yours or chances are they update their icon regularly by design and so circumvent the problem you are experiencing.

3
  • It's curious though, almost all applications that I'm running do the right thing. Nov 7, 2011 at 8:30
  • 2
    The key word there is "almost". Most applications now cater for these kinds of problems but it's not mandatory and not all applications will do it...
    – Mokubai
    Nov 7, 2011 at 19:01
  • 2
    Icons don't have to be re-registered regularly. Windows actually sends a message, WM_TASKBARCREATED, when the taskbar is recreated after an Explorer crash. Applications can create an event handler to register their icon again in that case. (Microsoft doesn't mention this in their notification area documentation, so one can't really fault the developers of applications who don't do this). Oct 25, 2016 at 10:27
3

It seems there are specific steps to restore your system tray. If you close and restart Explorer properly, your system tray icons will return. I never expected by system tray items to fully return after a crash, but it seems to work! :)

  • Click Start Menu
  • Hold down Shift + Ctrl
  • Right-click on blank area of the long rectangular Start Menu
  • Select Exit Explorer

Your task bar is now gone.

  • Ctrl + Shift + Esc to get to the Task Manager
  • File > New Task (Run...)
  • explorer.exe

You should see all your system tray icons return.

Source: Close and Restart Explorer.exe

1
  • 1
    This worked for me, to my surprise, because i had already tried killing explorer.exe from the Task Manager, but that hadn’t fixed it; closing Explorer via the taskbar context menu restored my icons, though! \o/ Jan 29, 2020 at 17:11
2

I came up with a solution for myself and this fixed the problem, unlike the proposed solutions of "restarting explorer.exe". The problem is not with Windows Explorer, but rather that the programs in the System Tray are not written to rebuild in the System Tray after an explorer.exe crash. This solution requires a little bit of typing up a .bat file, but other than that that is pretty much it.

-

1) In Task Manager (CTRL+SHIFT+ESC), find the programs that are missing in the System Tray. They should all still be running, however not present in the System Tray. You should find them all after a bit of scrolling through Task Manager. Right-click on the first one and click "Open File Location". This will give you the name of the file-path, as well as the application (highlighted in Windows Explorer).

2) Open up Notepad. You will be typing up a .bat file. Copy the path of the Windows Explorer window that was opened up when you clicked "Open File Location". You will need to paste it into Notepad. You also need to have the file name of the program that you are actually opening up, which is already highlighted by Windows Explorer. The command should be in this exact format (no brackets and your own file and path names):

    @echo off
    cd "C:\[file path]"
    taskkill /f /im [file name].exe
    start /f /im [same file name].exe

    cd "C:\[file path]"
    taskkill /f /im [file name].exe
    start /f /im [same file name].exe

    cd "C:\[file path]"
    taskkill /f /im [file name].exe
    start /f /im [same file name].exe

    -exit

Make sure to include "@echo off" at the start and "-exit" at the end in order to automatically close the program. I ordered the commands for each program in the way that they appear in the System Tray from right-to-left. This is a good idea if you want to make sure that they load in a correct order.

3) Save the text in Notepad as a .bat file. To do this, delete the ".txt" extension in the "Save as..." prompt, select "All files (.)", and add ".bat" to the end of the file name.

4) IMPORTANT: This program should always be ran as Administrator. You can either right-click the program and click "Run as administrator" every time you would like to rebuild the System Tray, or create a shortcut to wherever it is stored that automatically runs as Administrator.

To do this, right-click the original .bat file and click "Create shortcut". Right click the shortcut that was just generated, and click "Properties". In the properties window, click the button that says "Advanced...". In this prompt, check the box that says "Run as administrator", and click OK, then OK again to close everything out. I added this shortcut to my Start Menu in order to make it easily searchable whenever explorer.exe decides to crash/restart. You should add the shortcut to "C:\Users\ Your User Name \AppData\Roaming\Microsoft\Windows\Start Menu\Programs" if you would like to do so.

-

I hope that this helps anyone with the same issue I had!

Here is an example of my .bat file for my programs for reference:

System Tray Rebuilder.bat

    @echo off
    cd "C:\Program Files (x86)\FSL\IconRestorer"
    taskkill /f /im IconRestorer.exe
    start IconRestorer.exe

    cd "C:\Program Files (x86)\Moo0\SystemMonitor 1.76"
    taskkill /f /im SystemMonitor.exe
    start SystemMonitor.exe

    cd "C:\Program Files (x86)\Software by Design"
    taskkill /f /im TrayTool.exe
    start TrayTool.exe

    cd "C:\Program Files (x86)\PrinterShare"
    taskkill /f /im paConsole.exe
    start paConsole.exe

    -exit
1
  • Running this script "as administrator" may result in the programs being launched with elevated/admin permissions, meaning they would have access to write to areas of the system usually protected (Windows folder, Program Files, sensitive registry areas, etc.)... a security risk. You can mitigate this by using "RUNAS /trustlevel:0x20000" instead of "START" to launch the applications. It will run the programs with basic permissions even though they were launched from a script run "as admin". Aug 31, 2021 at 2:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .