internet-logo41

Shell Folders и User Shell Folders в Windows XP / 2003 / Vista / 7 / 2008

Вы вероятно слышали про то, что в Windows существуют так называемые служебные папки: Рабочий Стол, Мои Документы, Мои рисунки, Моя Музыка, Главное Меню и так далее. И пути к этим служебным папкам прописаны в реестре. При этом поменяв настройки в реестре, мы изменяем пути к этим папкам, и можем таким образом перемещать их.

Пути к этим папкам указаны в следующих ключах реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
и
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

Так вот, запомните: эта информация неверна!

Почему пути к служебным папкам Windows не надо брать из реестра?

Почему же пути к служебным папкам Windows не рекомендуется брать из реестра? Ведь такая информация там есть!
Да, конечно, ключи Shell Folders и User Shell Folders в реестре есть. Однако, они помещены туда только в целях совместимости с версией Windows 95. Подробнее об этом читайте статью Реймонда Чена "Длинная и печальная история ключа Shell Folders" (копию этой статьи в формате PDF можно скачать здесь). Специально для тех, кто этому не верит - в Windows 7 в ключе Shell Folders помещена строковая переменная "!Do not use this registry key" со значением "Use the SHGetFolderPath or SHGetKnownFolderPath function instead".

Где теперь брать пути к служебным папкам Windows?

Для программистов - все очень просто: используйте функции SHGetFolderPath или SHGetKnownFolderPath. Для всех остальных - существуют программы, позволяющие просмотреть эти служебные папки. Список таких папок называется теперь CSIDL: Constant Special Item ID List (Microsoft Special Folder Identifiers). Подробнее о таких программах см. статью "Программы просмотра служебных папок Windows".+