Windows Shell Folders — The Whys, The Whats, The Hows (And A Complete List Of Them)

Danilo Bilanoski
4 min readMar 13, 2024

As most Windows users are aware, Microsoft typically provides ways to access locations that may lack an absolute-path-to-a-file-like structure, offering convenience for users and administrators. However, these often utilize a cryptic syntax that might be challenging to read or remember, as I demonstrated in several examples in my recent “How-to Tuesday” piece on creating Windows shortcuts with PowerShell.

Whether these shortcuts are built using friendly names or require unique registry keys, understanding shell folders is crucial in enhancing Windows navigation. Alongside that, it’s always beneficial to have a pre-made list of these items at hand when needed.

So let’s do both of these here.

Note: It’s advisable to save this piece to your reading list, as you may not come across it again.

Photo of a colorful light spiral outlining a magical shell like structure.
Photo by Reid Zura on Unsplash

What Are Windows Shell Folders

Windows Shell folders, often referred to as “Special folders”, serve as specialized directories in the Windows operating system providing a unified and consistent method for users and applications to access diverse data types. These folders are a essential component of the Windows Shell — the graphical user interface (GUI), and we can think of them as interface items abstracting the complexity behind the lack of the absolute path to a real file system directory. In simple terms — smart pointers to specific places in Windows which you might not be able to find browsing files and folders.

While some Shell folders directly link to physical directories on the disk, others, like “Libraries”, aggregate data from various locations, presenting a unified view and a standardized way. This expands to a convenience both for users and developers, as it allows applications to seamlessly access and manipulate data stored within these folders regardless of the interface language or build version of the system.

Now, before we explore the Windows registry to locate and list them, let’s first see how to execute them.

How To Access Windows Shell Folders

Shell folders can be accessed from the RUN dialog or the Windows Explorer address bar by appending them to the shell command.

To access them by their name, the syntax shell:name is used. To access them by the unique Windows registry identifier (GUID) of the class object they belong to (CLSID), the syntax shell:::{GUID} is required.

If you need to access them from command-line interfaces such as CMD or PowerShell or make Windows shortcuts to them, shell commands need to be passed to explorer.exe as arguments, as shown in the example below.

# By Name
explorer "shell:Cookies"

# By the CLSID GUID
explorer "shell :::{559D40A3-A036-40FA-AF61-84CB430A4D34}"

# From PowerShell Context
Start-Process -FilePath explorer -ArgumentList "shell-command"

How To Find And List Windows Shell Folders In Windows Registry

Shell folder definitions can be found in several locations of the Windows registry.

While certain locations may clearly relate to the term “Shell folder” in their names, others may not. Here, we’re examining it from an accessibility perspective — identifying those shell locations we can directly access.

1. By looking at properties of: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]

# List them with PowerShell
Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

2. By looking at the names of the FolderDescriptions in: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescritions]

# List them with PowerShell
$Folders = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions"
Get-ChildItem $Folders | select PSPath | Get-ItemProperty | select Name

3. By looking at the Class ID keys which have a ShellFolder subkey in: [HKEY_CLASSES_ROOT\CLSID\{GUID}]


# List them with PowerShell
Get-ChildItem -Path 'Registry::HKEY_CLASSES_ROOT\CLSID' | Where-Object {$_.getsubkeynames() -contains "ShellFolder"} | select PSChildName, {(get-itemproperty $_.pspath).'(default)'}

Often, these items will also have accessible subkeys that could point to different tabs within a menu panel or specific items in the Control Panel. Listing these requires a bit more PowerShell work. For those interested, you can find an example of a really good approach in the answers section of this Superuser.com post.

Complete Lists Of Windows Shell Folders

For all shell folders in the tables below, complete ready-to-use shell command will be included.

List Of Windows 11 Shell Folders By Name

Complete list of Window 11 Shell folders hosted on GitHub

List Of Windows 11 Shell Folders By CLSID GUID

This were long lists — hopefully, you found them useful.

Author’s Note

You made it to this point! Well, kudos to you my friend — either I’m a decent writer or you’re an excellent reader. Let’s go with the latter😅.

I’m Danilo, a seasoned IT Service Delivery engineer navigating the corporate chaos. I write about scripting, sysadmin stuff and things that are poorly documented elsewhere, aiming to share knowledge and improve writing.

Clap hands and leave feedback if you can.

--

--

Danilo Bilanoski

Follow me for occasional read about scripting, system adminstration and problem solving where we dip our toes into technical guidance - all in plain English.