65.9K
CodeProject 正在变化。 阅读更多。
Home

访问所有 Windows 特殊文件夹

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.96/5 (13投票s)

2008 年 3 月 12 日

CPOL

10分钟阅读

viewsIcon

106369

downloadIcon

4605

获取 Windows 特殊文件夹的路径名;可选地创建缺失的文件夹;访问物理和虚拟特殊文件夹。

摘要

本文介绍如何访问 Windows 特殊文件夹。这些文件夹包括“收藏夹”、“Cookie”、系统库等。这里提供了一个包含大量常量定义以及文档的代码,允许访问和创建这些文件夹。DotNET(我认为)提供对九个“特殊目录”的访问,而这里提供的功能允许访问另外 49 个“特殊文件夹”。

目录

引言。1

下载。1

代码文档。2

备注。6

历史。6

参考文献。6

表格

CSIDL 常量 (SHGetFolderPathA) 6

CSIDL 标志 (SHGetFolderPathA) 6

dotNET 特殊目录方法. 6

下载说明. 6

特殊文件夹列表输出(作者的机器) 6

引言

这没什么高深的,只是分享了一些繁琐的文档。我可能遗漏了,但不知何故 dotNET 似乎没有提供对我们 Windows 活动中如此多的系统目录或特殊文件夹的广泛访问。我推测,如果还没有的话,将来某个版本会修复。我能找到的只有九个特殊目录(参考表格 “dotNET SpecialDirectories 类共享方法”);而 WinAPI 提供了对这些以及另外 49 个目录的访问(参考表格 “WinAPI 函数 SHGetFolderPathA CSIDL 常量”)。Windows 特殊文件夹的每个文件夹都通过一个整数常量访问,58 个常量及其描述性文档的定义是一项繁琐的工作。我已经完成了,并在下面呈现给您,供您日后查阅。

代码主要是 Windows XP 兼容的,但是,对于安装了Vista的您,它在未来几年内(我被告知)将向后兼容。

下载

下载包含 VB.NET 源代码(可通过编辑器宏轻松移植到其他语言),它声明了 WinAPI 函数 SHGetFolderPathA 并定义了使用它所需的常量。此外,还提供了几个枚举,有助于阐明虚拟和物理文件夹,以及两个包装器方法;一个用于获取特殊文件夹路径;另一个用于创建特殊文件夹本身。没有提供类库,因为它可能不需要,但包含了一个可执行文件,它会简单地列出您机器上找到的所有物理特殊文件夹。

下载内容 包括

文件

说明和内容

modSpecialFolders.vb

CSIDL 常量的定义。
shell32.dll 函数 SHGetFolderPathA 的声明。
公共方法 CreateSpecialFolderPath。
公共方法 GetSpecialFolderPath。
以上所有内容的内联文档都相当全面。

enuCSIDL.vb

所有 CSIDL 常量和标志作为枚举的定义。
重复的内联文档。

enuCSIDLFlags.vb

所有 CSIDL 标志常量作为枚举的重新定义。
重复的内联文档。

enuCSIDLPhysical.vb

所有 CSIDL 物理文件夹常量作为枚举的重新定义。
重复的内联文档。

enuCSIDLVirtual.vb

所有 CSIDL 虚拟文件夹常量作为枚举的重新定义。
重复的内联文档。

SpecialFolders.pdf

本文的早期 PDF 版本。

代码文档

下表提供了 dotNET 方法和 WinAPI 常量的缩写文档。所有这些文档都在源代码中,就地提供。

dotNET SpecialDirectories 类共享方法:

dotNET 函数

描述

AllUsersApplicationData

获取指向位于
\Documents and Setting\All Users\ApplicationData 目录中的应用程序数据的路径名。

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 标志 (作者定义为已发现文件夹标志)Vista):

CSIDL/KNOWNFOLDER 标志

描述

kKF_FLAG_SIMPLE_IDLIST

构建项标识符列表(PIDL)的简单指针。Vista

kKF_FLAG_NOT_PARENT_RELATIVE

获取文件夹的默认路径,独立于其父项的当前位置。Vista

kKF_FLAG_DEFAULT_PATH

获取重定向到其他位置的已知文件夹的默认路径。

kKF_FLAG_INIT

使用其 Desktop.ini 设置初始化文件夹。

kKF_FLAG_NO_ALIAS

获取文件夹的真实系统路径,不包含任何别名占位符,如 %USERPROFILE%。

kKF_FLAG_DONT_UNEXPAND

在注册表中存储完整路径,不带环境变量。Vista

kKF_FLAG_DONT_VERIFY

在尝试检索路径或 IDList 之前,指定不验证文件夹是否存在。

kKF_FLAG_CREATE

如果指定的文件夹不存在,则强制创建。

注释

VistaWinAPI 函数 SHGetFolderPath 的等效函数是 SHGetKnownFolderPath。
XP:SHGetFolderPath 文档说明

“已弃用。获取由 CSIDL 值标识的文件夹的路径。
注意 从 Windows Vista 开始,此函数只是 SHGetKnownFolderPath 的包装器。CSIDL 值会被转换为其关联的 KNOWNFOLDERID,然后调用 SHGetKnownFolderPath。新应用程序应使用已知文件夹系统,而不是仅为了向后兼容而支持的旧 CSIDL 系统。”

VistaCSIDL 常量的等效项是 KNOWNFOLDERID 常量(请参阅参考文献)。

历史

2008 年 3 月 13 日 [Warrick Procter] 文章创建。

参考文献

dotNET:MSDN 特殊目录

http://msdn2.microsoft.com/en-us/library/microsoft.visualbasic.fileio.specialdirectories_members(VS.80).aspx

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

Vista: SHGetKnownFolderPath 函数

http://msdn2.microsoft.com/en-us/library/bb762188(VS.85).aspx

Vista: KNOWNFOLDERID 常量

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 ==> 物理文件夹,未创建。

© . All rights reserved.