How-to: Enumerate User Shell Folders to determine the Profile/Start Menu folder locations.

Roaming Profile Folder Extensions

OS version Local Profile folder %userprofile% Roaming Profile Folder
Windows XP/ 2003 C:\Documents and Settings\username fileshare\username
Windows Vista C:\Users\username fileshare\username.V2
Windows Server 2008 C:\Users\username fileshare\username.V2
Windows 7 C:\Users\username fileshare\username.V2
Windows Server 2008 R2 C:\Users\username fileshare\username.V2
Windows 8 * (Q2887239 ) C:\Users\username fileshare\username.V3
Windows Server 2012 * (Q2887239 ) C:\Users\username fileshare\username.V3
Windows 8.1 * (Q2887595) C:\Users\username fileshare\username.V4
Windows Server 2012 R2 * (Q2887595) C:\Users\username fileshare\username.V4
Windows 10 (2015) C:\Users\username fileshare\username.V5
Windows 10 Anniversary Edition (2016) C:\Users\username fileshare\username.V6
Windows 10 Creators Update (2017) C:\Users\username fileshare\username.V6
Windows 10 Fall Creators Update (2017) C:\Users\username fileshare\username.V6

* These OS's require a patch to upgrade from .V2 to separate V3/V4 profiles.

Profile Subfolders

As Windows has been updated over time, the profile folder names and subfolders have changed:

Windows 10 / 2012 R2

%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Network Shortcuts
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent Items
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu

'All Users' Shell Folders

The folders for All Users settings:

Windows 10/2012 R2

%PUBLIC%\Public Desktop
%PUBLIC%\Public Documents
%ProgramData%\Microsoft\Windows\Start Menu\Programs  *
%ProgramData%\Microsoft\Windows\Start Menu  *
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup  *

* In Windows 10 the Start Menu items are held in a database that is stored under C:\Users\accountname\AppData\Local\TileDataLayer this is proprietary, non user editable and limited to 500 shortcuts. It is also used for Cortana Search. The entire database can be copied between accounts - all or nothing.


There are definitions for all the above in the registry, however: I implore you to exercise restraint and not rely on this new key. Just use the function SHGetFolderPath, which returns the path to whatever folder you want. Let the "User Shell Folders" key rest in peace. - Raymond Chen (MSFT)

A fully supported way of reading these values can be done via Shell.Application, here are a couple of PowerShell and VBScript examples which echo all the values. Some of these are already available as standard environment variables but these scripts will display everything. Using the ShellSpecialFolderConstants means the scripts will work on any foreign locale edition of Windows.

To modify these values, either use Group Policy or a script like this.

If you must delve into the Registry here are the locations:

Registry locations (REG_EXPAND_SZ)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

By default these all resolve to subfolders below %USERPROFILE% but they can be redirected to other locations by group policy.

Registry locations for ALL Users (REG_EXPAND_SZ)
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

On a brand new install of Windows some of the keys may not exist (typically the fonts entry) Registry entries can appear in both the older Shell Folders subkey and the User Shell Folders in both HKLM and HKCU. The entries that appear in User Shell Folders take precedence over those in Shell Folders.
The entries that appear in HKCU take precedence over those in HKLM

Folder Redirection

Although it is possible to redirect any of these folders with Group Policy, not all options are fully supported,
for example redirecting IE favorites/cookies will result in very slow performance.


Find the location of the Start Menu folder:

For /f "tokens=3*" %%G in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Start Menu" ^|Find "REG_"') do Call Set _startmenu=%%H

Echo %_startmenu%

PowerShell function to open the Start menu:

function Open-StartMenu {
 $drive = dir env:SystemDrive
 $startPath = $drive.value + "\ProgramData\Microsoft\Windows\Start Menu"
 if (test-path $startPath) {explorer $startPath}

“There are no shortcuts to any place worth going” - Beverly Sills


Shell: folder - Shortcuts to key folders.
Windows Environment Variables
RoamingProfile.vbs - Cleardown files to improve logon and logoff times.
WshShell.SpecialFolders - VBScript obtain the path to special Windows folders.
Managing Roaming User Data Deployment Guide -
Q886549 - User Shell Folders.

Copyright © 1999-2020
Some rights reserved