Why are my notification icon customizations lost after six months of disuse?


A customer had a notification icon that was used only once every few months. They found that even though the user configured the icon to appear on the taskbar, if six months went by without the icon being used, then its configuration disappeared from the taskbar notification configuration control panel, and the next time the icon appeared, it received default treatment instead of the customized settings. Why is that?

An application can create and remove taskbar notification icons by calling Shell_Notify­Icon. When the application removes its taskbar notification icon, there is now an open question: Is it gone temporarily, or is it gone for good? There's no way for a program to say, "Hey, I'm removing this icon, and it's never coming back." (For one thing, it won't be able to say this during uninstall, because the user doing the uninstall cannot send information to other users whose profiles might not even exist on the local system.)

The notification area uses the heuristic that an icon that hasn't appeared in six months is probably not coming back. Or at least if it does, you won't mind re-customizing it.

But it means that if you have a notification that occurs, say, only once a year, the customization will be forgotten by the time it comes back around.

Comments (26)
  1. IanBoyd says:

    Daylight savings time is a good counter-example. Perhaps their stored customization should be removed aftter 6 months and one day (can round up to 7 months)

    1. Damien says:

      Raymond wrote before about why a notification about DST change may not be too useful

      https://blogs.msdn.microsoft.com/oldnewthing/20061101-03/?p=29153

    2. pc says:

      United States “Standard Time” is only 4½ months long. So if you want to handle this case, you probably want to at least deal with the 7½ month gap from the start of DST to the end of it, so you want at least 8 months. At which point, you might as well go for 12 or 13 months to handle notifications that only show up once a year.

    3. Antonio Rodríguez says:

      I agree. I’d give it a 13 months window. Or, even better, I’d keep the customizations indefinitely, but hide the entry from the customization dialog after one month (see my comment bellow). That way, the entry would fade away when the user probably doesn’t care about it; but 7 or 12 months later, when the notification icon shows again, the system would remember the setting, and allow the user to change it again.

      1. Alex Cohn says:

        @Antonio Rodríguez that could be a cool feature!

  2. Stéphan Leclercq says:

    Oooh I’m disappointed ! I thought that Microsoft Labs had solved the halting problem long time ago but kept it secret from Turing aficionados.

  3. Rick C says:

    What would be the justification for forgetting? Saving a few bytes of disk somewhere? Seems a little silly in the modern era.

    1. pc says:

      Probably to appease the people who think “Windows is terrible. I uninstall something and there’s still ‘cruft’ all over the place. Look, I can still change the notification icon settings of this program I uninstalled a few months ago. There’s probably gigabytes of data left over in the registry somewhere I should find and delete.”

      1. Bradley says:

        If it tracks the last date it was displayed, couldn’t it also track the path of the application that spawned it, and periodically check to see if the application is still around? It isn’t a perfect solution either, but it seems to me that it would be more accurate that timing alone.

        1. Kirby FC says:

          This is a problem that’s been around for a long time — you uninstall something but there are still bits and pieces that remain. Stray files, stray registry entries, etc. Maybe it’s partly Microsoft’s fault, I don’t know.

          It’s it really that hard to get rid of everything when you uninstall?

          1. ErikF says:

            I believe that it is. On my Linux server (my Linux desktops are worse!), there are tons of files in dot directories from programs that I ran once upon a time but have stayed around. Most of the files are small, but I still have multiple megabytes of cruft. There are also configuration and storage bits in /etc, /usr and /var that stayed around even after the package manager removed the program. MacOS is no better at this either; I’ve used Macs too!

            The only way that I know of completely removing all the junk on your computer is to do a full wipe and reinstall.

          2. Ray Koopa says:

            Most developers are like bratty kids. They don’t clean up after messing around.

          3. skSdnW says:

            There is no good way for a uninstaller to clean up [Local]AppData & the registry for applications that are installed for all users and have been used by multiple users. You can in theory use ActiveSetup but it is undocumented and not really suited for uninstallation since you need a mini uninstaller for every user and you end up with a delete yourself issue. The other alternative is to clean the profile and registry for each local user but that does not work in domain environments and also causes problems if some user did their own single-user installation of the same app.

          4. Joshua says:

            Enh. Delete yourself is long-solved. Use a system binary to host your code for the delete step. This is easier to get right if you spawn the system binary yourself rather than hijacking an existing process.

          5. cheong00 says:

            The Installer database only know about the files created by it, hence it’ll only remove those files comes with .MSI or .MSP files.

            If the program use custom updater and update files without telling the installer database, it won’t know if it should delete the files on program uninstall. (Say, what happens if a Lyrics plugin is copied to you WinAmp folder, or some place in “Common Files” folder?)

            Data file is completely different problem. Some user prefers to keep them because you hate to lose data (not settings) when you has to reinstall it. Some installers offers to purge data folder the program is using on uninstall, but the installer need to have this feature in the beginning, and the package creator need to tell the installer which data folder it’ll be using.

          6. Chris Crowther says:

            It depends. Partly because you don’t know what the user wants to delete and what they might want to keep. A simple solution is, for example, to just whack any folders you create for writing data to. The problem with that approach is you don’t know what other random files the user may have chosen to drag in there.

          7. You need to know more than just “being uninstalled” to decide whether or not to keep my customizations.

            For example, I have software that I use rarely, which I install, use, then uninstall because I’m unlikely to use it for the next 8 to 15 months, and I’d rather not deal with the security updates etc over that time. I still want my customizations kept, so that when I next install it, it remembers everything I told it.

            On the other hand, my employer stopped using a product recently, which I’ve uninstalled from my machine – I only used it because my co-workers did, and now that our employer doesn’t pay for it, no-one is going to use it, me included. In that case, I would like to see my customizations removed.

        2. Richard says:

          This method would likely work with local file systems, but would possibly not work with remote (UNC) file systems. Is it gone for good or did I not authenticate against the remote file system because I’m not in a Domain and I didn’t provide the proper credentials.

    2. Antonio Rodríguez says:

      The problem isn’t a few bytes of memory or storage. It’s the customization list’s real estate. Many people like to go installing (and then uninstalling) every program they can get their hands on. Furthermore, some programs which create dynamic icons and doesn’t do their homework get their icons listed several times in the customization dialog, muddying the waters even more. Without some mechanism of automatic cleanup, the list can get so long that it’s difficult/impossible to find the icon you are looking for.

      1. MarcK4096 says:

        Then hide the icon after 6 months, but don’t delete the settings. Unhide it if it comes back. The issue is losing the settings. I do mind having to set things up again.

    3. Tim says:

      Probably so that when you go to change the customization settings you don’t have to scroll through hundreds of programs that you used once five years ago.

  4. Swisstone says:

    Out of curiosity, what triggers the cleaning operation? explorer.exe itself?

  5. John Doe says:

    About the phenomenon that some notification icons are not displayed after six months have elapsed since Unified Write Filter was enabled
    https://blogs.technet.microsoft.com/askcorejp/2017/09/05/uwf-traynotify/

  6. Is this also the situation with Universal Windows Platform apps and Metro-style apps?

    In case of those apps, everything seems to be in one coherent package, so Windows can definitely tell if the icon has gone and won’t come back ever again.

  7. dspig says:

    Six months? Luxury! Here (Win 10, Surface Pro 3) the battery icon disappears every month or so.

  8. Joshua Schaeffer says:

    I would like notification icons to immediately disappear when the process behind them terminates. This is Win32 101 but in 22 years it has never been done. We have the HWND to receive callbacks which means we have the process and then we can have the handle in most cases. What’s the excuse for not doing it? It’s an excuse after all.

Comments are closed.

Skip to main content