访问所有 Windows 特殊文件夹






4.96/5 (13投票s)
获取 Windows 特殊文件夹的路径名;可选地创建缺失的文件夹;访问物理和虚拟特殊文件夹。
- 下载 SpecialFolders_Article - 171.01 KB
- 下载 SpecialFolders_EXE - 10.68 KB
- 下载 SpecialFolders_Source - 42.05 KB
摘要
本文介绍如何访问 Windows 特殊文件夹。这些文件夹包括“收藏夹”、“Cookie”、系统库等。这里提供了一个包含大量常量定义以及文档的代码,允许访问和创建这些文件夹。DotNET(我认为)提供对九个“特殊目录”的访问,而这里提供的功能允许访问另外 49 个“特殊文件夹”。
目录
下载说明. 6
引言
这没什么高深的,只是分享了一些繁琐的文档。我可能遗漏了,但不知何故 dotNET 似乎没有提供对我们 Windows 活动中如此多的系统目录或特殊文件夹的广泛访问。我推测,如果还没有的话,将来某个版本会修复。我能找到的只有九个特殊目录(参考表格 “dotNET SpecialDirectories 类共享方法”);而 WinAPI 提供了对这些以及另外 49 个目录的访问(参考表格 “WinAPI 函数 SHGetFolderPathA CSIDL 常量”)。Windows 特殊文件夹的每个文件夹都通过一个整数常量访问,58 个常量及其描述性文档的定义是一项繁琐的工作。我已经完成了,并在下面呈现给您,供您日后查阅。
代码主要是 Windows XP 兼容的,但是,对于安装了
下载
下载包含 VB.NET 源代码(可通过编辑器宏轻松移植到其他语言),它声明了 WinAPI 函数 SHGetFolderPathA 并定义了使用它所需的常量。此外,还提供了几个枚举,有助于阐明虚拟和物理文件夹,以及两个包装器方法;一个用于获取特殊文件夹路径;另一个用于创建特殊文件夹本身。没有提供类库,因为它可能不需要,但包含了一个可执行文件,它会简单地列出您机器上找到的所有物理特殊文件夹。
下载内容 包括
文件 |
说明和内容 |
modSpecialFolders.vb |
CSIDL 常量的定义。 |
enuCSIDL.vb |
所有 CSIDL 常量和标志作为枚举的定义。 |
enuCSIDLFlags.vb |
所有 CSIDL 标志常量作为枚举的重新定义。 |
enuCSIDLPhysical.vb |
所有 CSIDL 物理文件夹常量作为枚举的重新定义。 |
enuCSIDLVirtual.vb |
所有 CSIDL 虚拟文件夹常量作为枚举的重新定义。 |
SpecialFolders.pdf |
本文的早期 PDF 版本。 |
代码文档
下表提供了 dotNET 方法和 WinAPI 常量的缩写文档。所有这些文档都在源代码中,就地提供。
dotNET SpecialDirectories 类共享方法:
dotNET 函数 |
描述 |
AllUsersApplicationData |
获取指向位于 |
CurrentUserApplicationData |
获取指向 CurrentApplicationData 目录的路径名。 |
桌面 |
获取指向桌面目录的路径名。 |
MyDocuments |
获取指向 MyDocuments 目录的路径名。 |
MyMusic |
获取指向我的音乐目录的路径名。 |
MyPictures |
获取指向我的图片目录的路径名。 |
ProgramFiles |
获取指向 Program Files 目录的路径。 |
Programs |
获取指向 Programs 目录的路径名。 |
Temp |
获取指向 Temp 目录的路径名。 |
WinAPI 函数 SHGetFolderPathA CSIDL 常量(作者定义)
CSIDL 常量 |
描述 |
kCSIDL_ADMINTOOLS |
用于存储单个用户管理工具的文件系统目录。 |
kCSIDL_ALTSTARTUP |
对应于用户非本地化启动程序组的文件系统目录。 |
kCSIDL_APPDATA |
作为应用程序特定数据的通用存储库的文件系统目录。 |
kCSIDL_BITBUCKET |
包含用户回收站中对象的虚拟文件夹。 |
kCSIDL_CDBURN_AREA |
作为待写入 CD 的文件暂存区的文件系统目录。 |
kCSIDL_COMMON_ADMINTOOLS |
包含计算机所有用户管理工具的文件系统目录。 |
kCSIDL_COMMON_ALTSTARTUP |
对应于所有用户的非本地化启动程序组的文件系统目录。 |
kCSIDL_COMMON_APPDATA |
包含所有用户应用程序数据的目录。 |
kCSIDL_COMMON_DESKTOPDIRECTORY |
包含所有用户桌面上显示的文件和文件夹的文件系统目录。 |
kCSIDL_COMMON_DOCUMENTS |
包含所有用户文档的文件系统目录。 |
kCSIDL_COMMON_FAVORITES |
作为所有用户收藏项的通用存储库的文件系统目录。 |
kCSIDL_COMMON_MUSIC |
作为所有用户共享的音乐文件的存储库的文件系统目录。 |
kCSIDL_COMMON_OEM_LINKS |
指向所有用户 OEM 特定应用程序的链接。 |
kCSIDL_COMMON_PICTURES |
作为所有用户共享的图像文件的存储库的文件系统目录。 |
kCSIDL_COMMON_PROGRAMS |
包含所有用户在“开始”菜单上显示的通用程序组目录的文件系统目录。 |
kCSIDL_COMMON_STARTMENU |
包含所有用户在“开始”菜单上显示的程序和文件夹的文件系统目录。 |
kCSIDL_COMMON_STARTUP |
包含所有用户在“启动”文件夹中显示的程序的文件系统目录。 |
kCSIDL_COMMON_TEMPLATES |
包含所有用户可用的模板的文件系统目录。 |
kCSIDL_COMMON_VIDEO |
作为所有用户共享的视频文件的存储库的文件系统目录。 |
kCSIDL_COMPUTERSNEARME |
附近的计算机(从工作组成员资格计算)。(虚拟) |
kCSIDL_CONNECTIONS |
网络和拨号连接。 |
kCSIDL_CONTROLS |
包含控制面板应用程序图标的虚拟文件夹。 |
kCSIDL_COOKIES |
作为 Internet Cookie 的通用存储库的文件系统目录。 |
kCSIDL_DESKTOP |
表示 Windows 桌面的虚拟文件夹,是命名空间的根。实际上是物理文件夹 C:\Documents and Settings\Admin\Desktop。 |
kCSIDL_DESKTOPDIRECTORY |
用于在桌面物理存储文件对象的目录。 |
kCSIDL_DRIVES |
表示“我的电脑”的虚拟文件夹,包含本地计算机上的所有内容:存储设备、打印机和控制面板。 |
kCSIDL_FAVORITES |
作为用户收藏项的通用存储库的文件系统目录。 |
kCSIDL_FONTS |
包含字体的虚拟文件夹。典型路径为 C:\Windows\Fonts。实际上是物理文件夹。 |
kCSIDL_HISTORY |
作为 Internet 历史记录项的通用存储库的文件系统目录。 |
kCSIDL_INTERNET |
表示 Internet 的虚拟文件夹。 |
kCSIDL_INTERNET_CACHE |
作为临时 Internet 文件的通用存储库的文件系统目录。 |
kCSIDL_LOCAL_APPDATA |
作为本地(非漫游)应用程序数据存储库的文件系统目录。 |
kCSIDL_MYDOCUMENTS |
表示“我的文档”桌面项的虚拟文件夹。 |
kCSIDL_MYMUSIC |
作为音乐文件的通用存储库的文件系统目录。 |
kCSIDL_MYPICTURES |
作为图像文件的通用存储库的文件系统目录。 |
kCSIDL_MYVIDEO |
作为视频文件的通用存储库的文件系统目录。 |
kCSIDL_NETHOOD |
包含可能存在于“网络邻居”虚拟文件夹中的链接对象的目录。 |
kCSIDL_NETWORK |
表示网络邻居的虚拟文件夹,是网络命名空间的根。 |
kCSIDL_PERSONAL |
表示“我的文档”桌面项的虚拟文件夹。实际上是物理文件夹 C:\Documents and Settings\Admin\My Documents。 |
kCSIDL_PRINTERS |
包含已安装打印机的虚拟文件夹。 |
kCSIDL_PRINTHOOD |
包含可以存在于“打印机”虚拟文件夹中的链接对象的目录。 |
kCSIDL_PROFILE |
用户的配置文件文件夹。 |
kCSIDL_PROFILES |
包含用户配置文件文件夹的文件系统目录。 |
kCSIDL_PROGRAM_FILES |
Program Files 文件夹。典型路径为 C:\Program Files。 |
kCSIDL_PROGRAM_FILES_COMMON |
用于跨应用程序共享组件的文件夹。 |
kCSIDL_PROGRAM_FILES_COMMONX86 |
RISC 上的 x86 Program Files\Common。 |
kCSIDL_PROGRAM_FILESX86 |
RISC 上的 x86 系统目录。 |
kCSIDL_PROGRAM_FILESX86 |
RISC 上的 x86 C:\Program Files。 |
kCSIDL_PROGRAMS |
包含用户程序组的文件系统目录。 |
kCSIDL_RECENT |
包含指向用户最近使用的文档的快捷方式的文件系统目录。 |
kCSIDL_RESOURCES |
%windir%\Resources\,用于主题和其他 Windows 资源。 |
kCSIDL_RESOURCES_LOCALIZED |
%windir%\Resources\[LangID],用于主题和其他 Windows 特定资源。 |
kCSIDL_SENDTO |
包含“发送到”菜单项的文件系统目录。 |
kCSIDL_STARTMENU |
包含“开始”菜单项的文件系统目录。 |
kCSIDL_STARTUP |
对应于用户启动程序组的文件系统目录。 |
kCSIDL_SYSTEM |
Windows 系统文件夹。 |
kCSIDL_TEMPLATES |
作为文档模板通用存储库的文件系统目录。 |
kCSIDL_WINDOWS |
Windows 目录或 SYSROOT。 |
WinAPI 函数 SHGetFolderPathA CSIDL 标志 (作者定义为已发现文件夹标志)
CSIDL/KNOWNFOLDER 标志 |
描述 |
kKF_FLAG_SIMPLE_IDLIST |
构建项标识符列表(PIDL)的简单指针。( |
kKF_FLAG_NOT_PARENT_RELATIVE |
获取文件夹的默认路径,独立于其父项的当前位置。( |
kKF_FLAG_DEFAULT_PATH |
获取重定向到其他位置的已知文件夹的默认路径。 |
kKF_FLAG_INIT |
使用其 Desktop.ini 设置初始化文件夹。 |
kKF_FLAG_NO_ALIAS |
获取文件夹的真实系统路径,不包含任何别名占位符,如 %USERPROFILE%。 |
kKF_FLAG_DONT_UNEXPAND |
在注册表中存储完整路径,不带环境变量。( |
kKF_FLAG_DONT_VERIFY |
在尝试检索路径或 IDList 之前,指定不验证文件夹是否存在。 |
kKF_FLAG_CREATE |
如果指定的文件夹不存在,则强制创建。 |
注释
该
XP:SHGetFolderPath 文档说明
“已弃用。获取由 CSIDL 值标识的文件夹的路径。
注意 从 Windows Vista 开始,此函数只是 SHGetKnownFolderPath 的包装器。CSIDL 值会被转换为其关联的 KNOWNFOLDERID,然后调用 SHGetKnownFolderPath。新应用程序应使用已知文件夹系统,而不是仅为了向后兼容而支持的旧 CSIDL 系统。”
该
历史
2008 年 3 月 13 日 [Warrick Procter] 文章创建。
参考文献
dotNET:MSDN 特殊目录
VB:如何使用 Visual Basic 中的 SHGetFolderPath 函数
http://support.microsoft.com/kb/252652
XP:SHGetFolderPath 函数
http://msdn2.microsoft.com/en-us/library/bb762181(VS.85).aspx
XP:CSIDL 常量
http://msdn2.microsoft.com/en-us/library/bb762494(VS.85).aspx
http://msdn2.microsoft.com/en-us/library/bb762188(VS.85).aspx
http://msdn2.microsoft.com/en-us/library/bb762584(VS.85).aspx
附录
SF# 特殊文件夹名称 路径
---- ------------------------ ---------------------------------------------------------------
000) Desktop C:\Documents and Settings\Admin\Desktop
001) Internet ==> 虚拟文件夹,不存在。
002) Programs C:\Documents and Settings\Admin\Start Menu\Programs
003) Controls ==> 虚拟文件夹,不存在。
004) Printers ==> 虚拟文件夹,不存在。
005) Personal C:\Documents and Settings\Admin\My Documents
006) Favorites C:\Documents and Settings\Admin\Favorites
007) Startup C:\Documents and Settings\Admin\Start Menu\Programs\Startup
008) Recent C:\Documents and Settings\Admin\Recent
009) SendTo C:\Documents and Settings\Admin\SendTo
010) BitBucket ==> 虚拟文件夹,不存在。
011) StartMenu C:\Documents and Settings\Admin\Start Menu
012) MyDocuments ==> 物理文件夹,未创建。
013) MyMusic C:\Documents and Settings\Admin\My Documents\My Music
014) MyVideo C:\Documents and Settings\Admin\My Documents\My Videos
016) DesktopDirectory C:\Documents and Settings\Admin\Desktop
017) Drives ==> 虚拟文件夹,不存在。
018) Network ==> 虚拟文件夹,不存在。
019) Nethood C:\Documents and Settings\Admin\NetHood
020) Fonts C:\WINDOWS\Fonts
021) Templates C:\Documents and Settings\Admin\Templates
022) CommonStartMenu C:\Documents and Settings\All Users\Start Menu
023) CommonPrograms C:\Documents and Settings\All Users\Start Menu\Programs
024) CommonStartup C:\Documents and Settings\All Users\Start Menu\Programs\Startup
025) CommonDesktopDirectory C:\Documents and Settings\All Users\Desktop
026) AppData C:\Documents and Settings\Admin\Application Data
027) Printhood C:\Documents and Settings\Admin\PrintHood
028) LocalAppdata C:\Documents and Settings\Admin\Local Settings\Application Data
029) AltStartup ==> 物理文件夹,未创建。
030) CommonAltStartup ==> 物理文件夹,未创建。
031) CommonFavorites C:\Documents and Settings\All Users\Favorites
032) InternetCache C:\Documents and Settings\Admin\Local Settings\Temporary Internet Files
033) Cookies C:\Documents and Settings\Admin\Cookies
034) History C:\Documents and Settings\Admin\Local Settings\History
035) CommonAppData C:\Documents and Settings\All Users\Application Data
036) Windows C:\WINDOWS
037) System C:\WINDOWS\system32
038) ProgramFiles C:\Program Files
039) MyPictures C:\Documents and Settings\Admin\My Documents\My Pictures
040) Profile C:\Documents and Settings\Admin
041) SystemX86 C:\WINDOWS\system32
042) ProgramFilesX86 ==> 物理文件夹,未创建。
043) CommonProgramFiles C:\Program Files\Common Files
044) CommonProgramFilesX86 ==> 物理文件夹,未创建。
045) CommonTemplates C:\Documents and Settings\All Users\Templates
046) CommonDocuments C:\Documents and Settings\All Users\Documents
047) CommonAdminTools C:\Documents and Settings\All Users\Start Menu\Programs\Administrative Tools
048) AdminTools C:\Documents and Settings\Admin\Start Menu\Programs\Administrative Tools
049) Connections ==> 虚拟文件夹,不存在。
053) CommonMusic C:\Documents and Settings\All Users\Documents\My Music
054) CommonPictures C:\Documents and Settings\All Users\Documents\My Pictures
055) CommonVideo C:\Documents and Settings\All Users\Documents\My Videos
056) Resources C:\WINDOWS\resources
057) ResourcesLocalized ==> 物理文件夹,未创建。
058) CommonOEMLinks ==> 虚拟文件夹,不存在。
059) CDBurnArea C:\Documents and Settings\Admin\Local Settings\Application Data\Microsoft\CD Burning
061) ComputersNearMe ==> 虚拟文件夹,不存在。
062) Profiles ==> 物理文件夹,未创建。