Unhide Two Network Icons in the Control Panel

The Control Panel in Windows Vista has two namespace items that ordinarily do not show as icons when the Control Panel is opened. They are fully operational but are configured with the non-enumerated attribute. To make these items show in the Control Panel is as simple as clearing the non-enumerated bit in their attributes as shell folders.

Connect To Network Map

Both items, it must be said, do nothing that cannot be reached from the “Network and Sharing Center” item. Though someone may find it useful to get to these items without having to open the Network and Sharing Center, this note really is intended only as a diversion or at most as a quick lesson in the shell namespace.

That said, the Connect To item is thought important enough by Microsoft to warrant an entry on the Start Menu, in the new style only, on the right side with other “system” links. So, if users did want to see the item in the Control Panel, or even on the desktop, the desire can’t very well be dismissed as unanticipated.

Connect To

To open the Connect To item directly from the Control Panel is essentially to click on “Connect to a Network” from among the Tasks shown in the Network and Sharing Center. Both end up calling the RunVAN function in VAN.DLL. The former does it in a separate RUNDLL32 process, the latter merely in a separate thread.

Windows is installed with no category for the Connect To item, which therefore shows under Additional Options.

Network Map

To open the Network Map item directly from the Control Panel is essentially to click on “View full map” near the top right of the Network and Sharing Center. Indeed, when you do the latter, you just get NETCENTER.DLL to open the Network Map item for you, but with all the overhead of going through the ShellExecute function.

Windows is installed with the Network Map item already assigned to the “Network and Internet” category.

Explanation

Every shell folder is represented by a CLSID, which is a 16-byte identifier often represented in string form as a sequence of hexadecimal numbers, with some hyphens, enclosed in curly braces.

A shell folder is in the Control Panel namespace if its CLSID, with curly braces, is defined as a subkey of any of several namespace keys for the Control Panel, the most important of which are:

(A detailed description of the Control Panel namespace is under development, presently at the page ControlPanel in the shell study.) The CLSIDs for the two items in question are:

{38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B} for Connect To
{E7DE9B1A-7533-4556-9484-B26FB486475E} for Network Map

As for any shell folder, each has a configuration in terms of registry keys and values under HKEY_CLASSES_ROOT\CLSID\clsid. The shell-folder attributes for an item are read from the registry value

Key: HKEY_CLASSES_ROOT\CLSID\clsid\ShellFolder
Value: Attributes
Type: REG_DWORD

While the 0x00100000 (SFGAO_NONENUMERATED) bit is set in the dword of data, the item is exempt from enumeration in any folder that contains it. Although both items are already defined in the Control Panel namespace, they do not show in the Control Panel unless this bit is clear.

Directions

However, clearing this bit in these keys is not the best way to allow the item to be enumerated. Windows is installed with the TrustedInstaller account as owner of these keys, with permissions set so that even administrators cannot write to these keys without first taking ownership. Instead, override the one value that needs to change. This can be done in the per-user branch from which the merged key HKEY_CLASSES_ROOT is drawn. For the current user, set the following registry value:

Key: HKEY_CURRENT_USER\Software\Classes\CLSID\clsid\ShellFolder
Value: Attributes
Type: REG_DWORD

You typically will have to create this key. Indeed, on a fresh installation, you will have to start creating subkeys all the way back at CLSID. Take the dword of Attributes data from the key in HKEY_CLASSES_ROOT, clear the 0x00100000 bit, and set it into the key in HKEY_CURRENT_USER.

Programmatic Access

Even while these items are not enumerated, they are accessible in the shell namespace and may therefore be opened programmatically, including from a Command Prompt through such commands as

explorer ::{21ec2020-3aea-1069-a2dd-08002b30309d}\::{clsid}
explorer ::{26ee0668-a00a-44d7-9371-beb064c98683}\category\::{clsid}

in which category is a decimal representation of the Control Panel category to which the item is assigned. This must be 3 for Network Map, to represent the “Network and Internet” category. For the Connect To item, which is not assigned to a category, use 0 or any valid category number (meaning 1 to 11 inclusive in Windows Vista).