Constant Special Item ID List (Windows Special Folders)

CSIDL

The CSIDL variables are useful for deploying to embedded applications such as Windows CE. A typical scenario where you would implement the CSIDL variable is when you define the Deployment Options of your project – i.e. In Visual Studio, right-click your project, then go to Properties > Devices. You will notice the “Output file folder:” option which specifies the directory path that your project will be deployed to. The example screenshot below shows the “Output file folder” option set using the CSIDL_STARTUP (the Windows Startup directory).

CSIDL

Note As of Windows Vista, these values have been replaced by KNOWNFOLDERID values. See that topic for a list of the new constants and their corresponding CSIDL values. For convenience, corresponding KNOWNFOLDERID values are also noted here for each CSIDL value.

The CSIDL system is supported under Windows Vista for compatibility reasons. However, new development should use KNOWNFOLDERID values rather than CSIDL values.

CSIDL (constant special item ID list) values provide a unique system-independent way to identify special folders used frequently by applications, but which may not have the same name or location on any given system. For example, the system folder may be “C:\Windows” on one system and “C:\Winnt” on another. These constants are defined in Shlobj.h. A subset of them is also defined in Shfolder.h.

Constant/value Description

CSIDL_ADMINTOOLS
FOLDERID_AdminTools
Version 5.0. The file system directory that is used to store administrative tools for an individual user. The MMC will save customized consoles to this directory, and it will roam with the user.

CSIDL_ALTSTARTUP
FOLDERID_Startup
The file system directory that corresponds to the user’s nonlocalized Startup program group. This value is recognized in Windows Vista for backward compatibility, but the folder itself no longer exists.

CSIDL_APPDATA
FOLDERID_RoamingAppData
Version 4.71. The file system directory that serves as a common repository for application-specific data. A typical path is C:\Documents and Settings\username\Application Data. This CSIDL is supported by the redistributable Shfolder.dll for systems that do not have the Microsoft Internet Explorer 4.0 integrated Shell installed.

CSIDL_BITBUCKET
FOLDERID_RecycleBinFolder
The virtual folder that contains the objects in the user’s Recycle Bin.

CSIDL_CDBURN_AREA
FOLDERID_CDBurning
Version 6.0. The file system directory that acts as a staging area for files waiting to be written to a CD. A typical path is C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning.

CSIDL_COMMON_ADMINTOOLS
FOLDERID_CommonAdminTools
Version 5.0. The file system directory that contains administrative tools for all users of the computer.

CSIDL_COMMON_ALTSTARTUP
FOLDERID_CommonStartup
The file system directory that corresponds to the nonlocalized Startup program group for all users. This value is recognized in Windows Vista for backward compatibility, but the folder itself no longer exists.

CSIDL_COMMON_APPDATA
FOLDERID_ProgramData
Version 5.0. The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer.

CSIDL_COMMON_DESKTOPDIRECTORY
FOLDERID_PublicDesktop
The file system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Documents and Settings\All Users\Desktop.

CSIDL_COMMON_DOCUMENTS
FOLDERID_PublicDocuments
The file system directory that contains documents that are common to all users. A typical path is C:\Documents and Settings\All Users\Documents.

CSIDL_COMMON_FAVORITES
FOLDERID_Favorites
The file system directory that serves as a common repository for favorite items common to all users.

CSIDL_COMMON_MUSIC
FOLDERID_PublicMusic
Version 6.0. The file system directory that serves as a repository for music files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Music.

CSIDL_COMMON_OEM_LINKS
FOLDERID_CommonOEMLinks
This value is recognized in Windows Vista for backward compatibility, but the folder itself is no longer used.

CSIDL_COMMON_PICTURES
FOLDERID_PublicPictures
Version 6.0. The file system directory that serves as a repository for image files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Pictures.

CSIDL_COMMON_PROGRAMS
FOLDERID_CommonPrograms
The file system directory that contains the directories for the common program groups that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs.

CSIDL_COMMON_STARTMENU
FOLDERID_CommonStartMenu
The file system directory that contains the programs and folders that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu.

CSIDL_COMMON_STARTUP
FOLDERID_CommonStartup
The file system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs\Startup.

CSIDL_COMMON_TEMPLATES
FOLDERID_CommonTemplates
The file system directory that contains the templates that are available to all users. A typical path is C:\Documents and Settings\All Users\Templates.

CSIDL_COMMON_VIDEO
FOLDERID_PublicVideos
Version 6.0. The file system directory that serves as a repository for video files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Videos.

CSIDL_COMPUTERSNEARME
FOLDERID_NetworkFolder
The folder that represents other computers in your workgroup.

CSIDL_CONNECTIONS
FOLDERID_ConnectionsFolder
The virtual folder that represents Network Connections, that contains network and dial-up connections.

CSIDL_CONTROLS
FOLDERID_ControlPanelFolder
The virtual folder that contains icons for the Control Panel applications.

CSIDL_COOKIES
FOLDERID_Cookies
The file system directory that serves as a common repository for Internet cookies. A typical path is C:\Documents and Settings\username\Cookies.

CSIDL_DESKTOP
FOLDERID_Desktop
The virtual folder that represents the Windows desktop, the root of the namespace.

CSIDL_DESKTOPDIRECTORY
FOLDERID_Desktop
The file system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A typical path is C:\Documents and Settings\username\Desktop.

CSIDL_DRIVES
FOLDERID_ComputerFolder
The virtual folder that represents My Computer, containing everything on the local computer: storage devices, printers, and Control Panel. The folder can also contain mapped network drives.

CSIDL_FAVORITES
FOLDERID_Favorites
The file system directory that serves as a common repository for the user’s favorite items. A typical path is C:\Documents and Settings\username\Favorites.

CSIDL_FONTS
FOLDERID_Fonts
A virtual folder that contains fonts. A typical path is C:\Windows\Fonts.

CSIDL_HISTORY
FOLDERID_History
The file system directory that serves as a common repository for Internet history items.

CSIDL_INTERNET
FOLDERID_InternetFolder
A virtual folder for Internet Explorer.

CSIDL_INTERNET_CACHE
FOLDERID_InternetCache
Version 4.72. The file system directory that serves as a common repository for temporary Internet files. A typical path is C:\Documents and Settings\username\Local Settings\Temporary Internet Files.

CSIDL_LOCAL_APPDATA
FOLDERID_LocalAppData
Version 5.0. The file system directory that serves as a data repository for local (nonroaming) applications. A typical path is C:\Documents and Settings\username\Local Settings\Application Data.

CSIDL_MYDOCUMENTS
FOLDERID_Documents
Version 6.0. The virtual folder that represents the My Documents desktop item. This value is equivalent to CSIDL_PERSONAL.

CSIDL_MYMUSIC
FOLDERID_Music
The file system directory that serves as a common repository for music files. A typical path is C:\Documents and Settings\User\My Documents\My Music.

CSIDL_MYPICTURES
FOLDERID_Pictures
Version 5.0. The file system directory that serves as a common repository for image files. A typical path is C:\Documents and Settings\username\My Documents\My Pictures.

CSIDL_MYVIDEO
FOLDERID_Videos
Version 6.0. The file system directory that serves as a common repository for video files. A typical path is C:\Documents and Settings\username\My Documents\My Videos.

CSIDL_NETHOOD
FOLDERID_NetHood
A file system directory that contains the link objects that may exist in the My Network Places virtual folder. It is not the same as CSIDL_NETWORK, which represents the network namespace root. A typical path is C:\Documents and Settings\username\NetHood.

CSIDL_NETWORK
FOLDERID_NetworkFolder
A virtual folder that represents Network Neighborhood, the root of the network namespace hierarchy.

CSIDL_PERSONAL
FOLDERID_Documents
Version 6.0. The virtual folder that represents the My Documents desktop item. This is equivalent to CSIDL_MYDOCUMENTS

Previous to Version 6.0. The file system directory used to physically store a user’s common repository of documents. A typical path is C:\Documents and Settings\username\My Documents. This should be distinguished from the virtual My Documents folder in the namespace. To access that virtual folder, use SHGetFolderLocation, which returns theITEMIDLIST for the virtual location, or refer to the technique described in Managing the File System.

CSIDL_PRINTERS
FOLDERID_PrintersFolder
The virtual folder that contains installed printers.

CSIDL_PRINTHOOD
FOLDERID_PrintHood
The file system directory that contains the link objects that can exist in the Printers virtual folder. A typical path is C:\Documents and Settings\username\PrintHood.

CSIDL_PROFILE
FOLDERID_Profile
Version 5.0. The user’s profile folder. A typical path is C:\Users\username. Applications should not create files or folders at this level; they should put their data under the locations referred to by CSIDL_APPDATA or CSIDL_LOCAL_APPDATA. However, if you are creating a new Known Folder the profile root referred to by CSIDL_PROFILE is appropriate.

CSIDL_PROGRAM_FILES
FOLDERID_ProgramFiles
Version 5.0. The Program Files folder. A typical path is C:\Program Files.

CSIDL_PROGRAM_FILESX86
FOLDERID_ProgramFilesX86

CSIDL_PROGRAM_FILES_COMMON
FOLDERID_ProgramFilesCommon
Version 5.0. A folder for components that are shared across applications. A typical path is C:\Program Files\Common. Valid only for Windows XP.

CSIDL_PROGRAM_FILES_COMMONX86
FOLDERID_ProgramFilesCommonX86

CSIDL_PROGRAMS
FOLDERID_Programs
The file system directory that contains the user’s program groups (which are themselves file system directories). A typical path is C:\Documents and Settings\username\Start Menu\Programs.

CSIDL_RECENT
FOLDERID_Recent
The file system directory that contains shortcuts to the user’s most recently used documents. A typical path is C:\Documents and Settings\username\My Recent Documents. To create a shortcut in this folder, use SHAddToRecentDocs. In addition to creating the shortcut, this function updates the Shell’s list of recent documents and adds the shortcut to the My Recent Documents submenu of the Start menu.

CSIDL_RESOURCES
FOLDERID_ResourceDir
Windows Vista. The file system directory that contains resource data. A typical path is C:\Windows\Resources.

CSIDL_RESOURCES_LOCALIZED
FOLDERID_LocalizedResourcesDir

CSIDL_SENDTO
FOLDERID_SendTo
The file system directory that contains Send To menu items. A typical path is C:\Documents and Settings\username\SendTo.

CSIDL_STARTMENU
FOLDERID_StartMenu
The file system directory that contains Start menu items. A typical path is C:\Documents and Settings\username\Start Menu.

CSIDL_STARTUP
FOLDERID_Startup
The file system directory that corresponds to the user’s Startup program group. The system starts these programs whenever any user logs on. A typical path is C:\Documents and Settings\username\Start Menu\Programs\Startup.

CSIDL_SYSTEM
FOLDERID_System
Version 5.0. The Windows System folder. A typical path is C:\Windows\System32.

CSIDL_SYSTEMX86
FOLDERID_SystemX86

CSIDL_TEMPLATES
FOLDERID_Templates
The file system directory that serves as a common repository for document templates. A typical path is C:\Documents and Settings\username\Templates.

CSIDL_WINDOWS
FOLDERID_Windows
Version 5.0. The Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A typical path is C:\Windows.

Flags

CSIDL_FLAG_CREATE
KF_FLAG_CREATE
Version 5.0. Combine with another CSIDL to force the creation of the associated folder if it does not exist.

CSIDL_FLAG_DONT_UNEXPAND
KF_FLAG_DONT_UNEXPAND
Combine with another CSIDL constant to ensure the expansion of environment variables.

CSIDL_FLAG_DONT_VERIFY
KF_FLAG_DONT_VERIFY
Combine with another CSIDL constant, except for CSIDL_FLAG_CREATE, to return an unverified folder path with no attempt to create or initialize the folder.

CSIDL_FLAG_NO_ALIAS
KF_FLAG_NO_ALIAS
Combine with another CSIDL constant to ensure the retrieval of the true system path for the folder, free of any aliased placeholders such as %USERPROFILE%, returned by SHGetFolderLocation. This flag has no effect on paths returned by SHGetFolderPath.

CSIDL_FLAG_PER_USER_INIT

CSIDL_FLAG_MASK
A mask for any valid CSIDL flag value.

Go here for the original Microsoft Post on this topic.

Advertisements

2 thoughts on “Constant Special Item ID List (Windows Special Folders)

  1. This is list is of no use without the corresponding Hex values. Where can I find Hex values for these constants? I don’t about .Net; perhaps all these constants are already defined in Framework for the lazy .Net programmers; but to code it in other programming languages, we need the Hex values.

    • CSIDL vars (and KNOWNFOLDERID vars) are very useful for deploying applications to machines running Windows.

      That being said, you bring up a good point – corresponding hex and/or decimal values have their purpose as well. Here’s a table that you may find of use:

      CSIDL Decimal Hex Shell Description
      CSIDL_ADMINTOOLS 48 0x30 5.0 The file system directory that is used to store administrative tools
      for an individual user.
      CSIDL_ALTSTARTUP 29 0x1D   The file system directory that corresponds to the user’s
      nonlocalized Startup program group.
      CSIDL_APPDATA 26 0x1A 4.71 The file system directory that serves as a common repository
      for application-specific data.
      CSIDL_BITBUCKET 10 0x0A   The virtual folder containing the objects in the user’s
      Recycle Bin.
      CSIDL_CDBURN_AREA 59 0x3B 6.0 The file system directory acting as a staging area for
      files waiting to be written to CD.
      CSIDL_COMMON_ADMINTOOLS 47 0x2F 5.0 The file system directory containing administrative
      tools for all users of the computer.
      CSIDL_COMMON_ALTSTARTUP 30 0x1E NT-based only The file system directory that corresponds to the nonlocalized
      Startup program group for all users.
      CSIDL_COMMON_APPDATA 35 0x23 5.0 The file system directory containing application data
      for all users.
      CSIDL_COMMON_DESKTOPDIRECTORY 25 0x19 NT-based only The file system directory that contains files and folders
      that appear on the desktop for all users.
      CSIDL_COMMON_DOCUMENTS 46 0x2E   The file system directory that contains documents that
      are common to all users.
      CSIDL_COMMON_FAVORITES 31 0x1F NT-based only The file system directory that serves as a common repository
      for favorite items common to all users.
      CSIDL_COMMON_MUSIC 53 0x35 6.0 The file system directory that serves as a repository
      for music files common to all users.
      CSIDL_COMMON_PICTURES 54 0x36 6.0 The file system directory that serves as a repository
      for image files common to all users.
      CSIDL_COMMON_PROGRAMS 23 0x17 NT-based only The file system directory that contains the directories
      for the common program groups that appear on the Start menu for all
      users.
      CSIDL_COMMON_STARTMENU 22 0x16 NT-based only The file system directory that contains the programs
      and folders that appear on the Start menu for all users.
      CSIDL_COMMON_STARTUP 24 0x18 NT-based only The file system directory that contains the programs
      that appear in the Startup folder for all users.
      CSIDL_COMMON_TEMPLATES 45 0x2D NT-based only The file system directory that contains the templates
      that are available to all users.
      CSIDL_COMMON_VIDEO 55 0x37 6.0 The file system directory that serves as a repository
      for video files common to all users.
      CSIDL_COMPUTERSNEARME 61 0x3D 6.0 The folder representing other machines in your workgroup.
      CSIDL_CONNECTIONS 49 0x31 6.0 The virtual folder representing Network Connections,
      containing network and dial-up connections.
      CSIDL_CONTROLS 3 0x03   The virtual folder containing icons for the Control
      Panel applications.
      CSIDL_COOKIES 33 0x21   The file system directory that serves as a common repository
      for Internet cookies.
      CSIDL_DESKTOP 0 0x00   The virtual folder representing the Windows desktop,
      the root of the shell namespace.
      CSIDL_DESKTOPDIRECTORY 16 0x10   The file system directory used to physically store file
      objects on the desktop.
      CSIDL_DRIVES 17 0x11   The virtual folder representing My Computer, containing
      everything on the local computer: storage devices, printers, and
      Control Panel. The folder may also contain mapped network drives.
      CSIDL_FAVORITES 6 0x06   The file system directory that serves as a common repository
      for the user’s favorite items.
      CSIDL_FONTS 20 0x14   A virtual folder containing fonts.
      CSIDL_HISTORY 34 0x22   The file system directory that serves as a common repository
      for Internet history items.
      CSIDL_INTERNET 1 0x01   A viritual folder for Internet Explorer.
      CSIDL_INTERNET_CACHE 32 0x20 4.72 The file system directory that serves as a common repository
      for temporary Internet files.
      CSIDL_LOCAL_APPDATA 28 0x1C 5.0 The file system directory that serves as a data repository
      for local (nonroaming) applications.
      CSIDL_MYDOCUMENTS 12 0x0C 6.0 The virtual folder representing the My Documents desktop
      item.
      CSIDL_MYMUSIC 13 0x0D 6.0 The file system directory that serves as a common repository
      for music files.
      CSIDL_MYPICTURES 39 0x27 5.0 The file system directory that serves as a common repository
      for image files.
      CSIDL_MYVIDEO 14 0x0E 6.0 The file system directory that serves as a common repository
      for video files.
      CSIDL_NETHOOD 19 0x13   A file system directory containing the link objects
      that may exist in the My Network Places virtual folder.
      CSIDL_NETWORK 18 0x12   A virtual folder representing Network Neighborhood,
      the root of the network namespace hierarchy.
      CSIDL_PERSONAL 5 0x05   The file system directory used to physically store a
      user’s common repository of documents. (From shell version 6.0 onwards,
      CSIDL_PERSONAL is equivalent to CSIDL_MYDOCUMENTS, which is a virtual
      folder.)
      CSIDL_PHOTOALBUMS 69 0x45 Vista The virtual folder used to
      store photo albums.
      CSIDL_PLAYLISTS 63 0x3F Vista The virtual folder used to store play albums.
      CSIDL_PRINTERS 4 0x04   The virtual folder containing installed printers.
      CSIDL_PRINTHOOD 27 0x1B   The file system directory that contains the link objects
      that can exist in the Printers virtual folder.
      CSIDL_PROFILE 40 0x28 5.0 The user’s profile folder.
      CSIDL_PROGRAM_FILES 38 0x26 5.0 The Program Files folder.
      CSIDL_PROGRAM_FILES_COMMON 43 0x2B 5.0 A folder for components that are shared across applications.
      CSIDL_PROGRAMS 2 0x02   The file system directory that contains the user’s program
      groups (which are themselves file system directories).
      CSIDL_RECENT 8 0x08   The file system directory that contains shortcuts to
      the user’s most recently used documents.
      CSIDL_RESOURCES 56 0x38 6.0 The file system directory that contains resource data.
      CSIDL_SAMPLE_MUSIC 64 0x40 Vista The file system directory that contains sample music.
      CSIDL_SAMPLE_PLAYLISTS 65 0x41 Vista The file system directory that contains sample playlists.
      CSIDL_SAMPLE_PICTURES 66 0x42 Vista The file system directory that contains sample pictures.
      CSIDL_SAMPLE_VIDEOS 67 0x43 Vista The file system directory that contains sample videos.
      CSIDL_SENDTO 9 0x09   The file system directory that contains Send To menu
      items.
      CSIDL_STARTMENU 11 0x0B   The file system directory containing Start menu items.
      CSIDL_STARTUP 7 0x07   The file system directory that corresponds to the user’s
      Startup program group.
      CSIDL_SYSTEM 37 0x25 5.0 The Windows System folder.
      CSIDL_TEMPLATES 21 0x15   The file system directory that serves as a common repository
      for document templates.
      CSIDL_WINDOWS 36 0x24 5.0 The Windows directory or SYSROOT.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s