I was over at the NTDebugging blog the other day and while browsing through the posts, I came across this one, written quite brilliantly by Matt Burrough
Control Panel Policy and the Missing Icon
After reading a few lines, I realized why this post had piqued my interest. A colleague of mine was working on a similar issue – where System Center Configuration Manager (SCCM) control panel icons weren’t visible the first time you opened the control panel after a reboot. He was discussing this case with another colleague and I happened to overhear a bit of the conversation.
If you want to understand the cause of the issue and how he debugged it, I highly recommend that you head on over to Matt’s post. If you’d rather just fix this issue and get it over with, here’s the lowdown.
This issue only occurs when you have the “Hide specified control panel applets” or “Show only specified control panel applets” settings enabled via a group policy. In our case, the “Hide specified control panel applets” setting was enabled. This policy results in Windows attempting to read the System.ApplicationName property of every control panel icon, to determine if they should be hidden or visible. Problem is, if some of the icons do not have this property set in the registry, these icons are not displayed the first time around. Close and open control panel and they’re there. A bit odd. This is the result of an issue in the way Windows handles the missing System.ApplicationName property. As Matt mentions, the Windows development team have been made aware of this.
How do we fix this so that the missing icons appear every time the control panel is opened?
You need to create the System.ApplicationName registry key under
HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\Extended Properties
Under this key, create a new string value with the name set to the path to the CPL file and value set to the System.ApplicationName property of the CPL item.
Matt’s post mentions that since the Mail icon is a inbuilt item, it's System.ApplicationName is known.
However, in our case, all missing control panel icons belong to SCCM. A search of the registry failed to locate any information about whether the SCCM CPL items even had a System.ApplicationName.
After a few moments wondering how we’re going to get past this hurdle, it came to me. Windows doesn’t display the icons the first time around only when it cannot find their System.ApplicationName property. It doesn’t matter what the System.ApplicationName property is set to, just as long as it is not in the list of hidden icons, set via group policy.
We set the System.ApplicationName property for the SCCM control panel icons in this way:
- Configuration Manager – SMSCFGRC
- Program Download Monitor – SMSPDM
- Run Advertised Programs – SMSRAP
- Remote Control – SMSRCCPL
We rebooted the system and opened the control panel. All icons are visible the first time itself. Issue worked around!