Forum Discussion
abdullah5490
May 11, 2022Brass Contributor
"Show all icons in system tray" option in windows11
Hello there. Subject said that all. This option was available till windows10 in taskbar and start menu settings, but in windows11, I found a settings to enable notification icons one by one, and not ...
- Dec 19, 2022
To always show all the Icons in the System Tray or Notification area of Windows 11/10, follow these steps:
1. Press Win+R to open the Run prompt.
2. Enter this value: explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
3. Tick the Always show all icons and notifications on the taskbar checkbox.
4. Click the OK button.Hope this helps everyone!
AMDMan64
Jan 23, 2025Copper Contributor
I'm partial to this solution because I wrote it, but instead of PowerShell, I like my executable that I wrote that can be configured to automatically unhide based on your requirements. I wrote it for use on the fleet of 1000+ computers that I manage.
Basically, all you need to do is pick a folder / location on your computer, like C:\ProgramData\Scripts\TrayIconUnhide.exe to store the executable.
Then, make a registry key to autostart under - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run. You can call the REG_SZ TrayIconUnhide with a value that points to your location: C:\ProgramData\Scripts\TrayIconUnhide.exe
Then, as long as that executable is running, it will automatically unhide. The refresh interval can be specified if you want to deviate from the default of 50 seconds.
All the source code is in the repository here:
https://github.com/KMSD-Tech/TrayIconUnhide-4.8
Here is a direct link to the executable:
I also implemented a "Run Once" functionality that would unhide anything hidden and then close if you don't want it constantly running.
Aemony
Jan 23, 2025Copper Contributor
A couple of weeks ago, I threw together a similar solution in a tiny C++ app. Already posted it previously in the thread, but the post for some weird reason doesn't appear.
Anyway, https://github.com/Aemony/NotifyIconPromote is a similar super-tiny C++ app that can be kept running in the background and will idle and automatically promote all new icons as they appear. It will also adhere to the user's choice of hiding some icons so it will never force the reveal of an already customized icon.
It doesn't have a refresh timer because it has no need of one. On launch, it will check the registry once, and automatically promote any new unconfigured icons, and then it will just sit and wait, sleeping, in the background until a change occurs that warrants its operation. It's also permanently tagged to run in Windows 11's Efficiency Mode so even when it wakes up, it'll always be prioritized below/after any regular foreground or background apps.
- AMDMan64Jan 23, 2025Copper Contributor
That's pretty cool. There must be a built-in C++ piece that can watch the registry then?
I wrote mine almost a year ago (in full transparency, I pretty much had Copilot write it since I can't claim to be a programmer) because I needed a solution to use on our managed devices at my work. With SCCM, you can't have the update icon being hidden in the taskbar. I've been deploying mine on everything from unsupported 2010 systems to brand new systems - and I doubt that anything is going to have a huge performance impact. I didn't like the PowerShell route because PowerShell scripts are honestly slow and would require complicated scheduled tasks.
It just shows that Microsoft needs to move on this, so we can stop using hack solutions - even if it can be a fun exercise in programming.- AemonyJan 25, 2025Copper Contributor
There must be a built-in C++ piece that can watch the registry then?
Yeah, it's a standard registry change notification from Win32, using RegNotifyChangeKeyValue.
It's possible to do something similar in PowerShell, by registering for an WMI event, see e.g. this related PowerShell script which relies on that functionality:
https://github.com/Liub0myr/win11-all-icons-on-taskbar/blob/main/all-icons-on-taskbar.ps1
Of course it's actually also possible to invoke the original Win32 C++ API from PowerShell as well, though it requires P/Invoke and is more cumbersome to work with. The above WMI event registration is by far the easiest method to implement in PowerShell.
I didn't like the PowerShell route because PowerShell scripts are honestly slow and would require complicated scheduled tasks.
Mhm, as someone who have worked with PowerShell both professionally and privately for years now, I fully agree. It's insane how stupidly slow PowerShell is, and especially compared to low-level native stuff such as C++. The fastest PowerShell script is typically one that a) never displays any output at all, and b) relies on native low-level applications to do everything. I developed a Steam backup PowerShell script at one point where I tested various methods of copying game files over, and overall time to completion was almost halved just by using Robocopy instead of the built-in PowerShell/.NET file copy operations.