SHGetFolderLocation 函数 (shlobj_core.h)

已弃用。 检索文件夹的路径作为 ITEMIDLIST 结构。

语法

SHSTDAPI SHGetFolderLocation(
  [in]  HWND             hwnd,
  [in]  int              csidl,
  [in]  HANDLE           hToken,
  [in]  DWORD            dwFlags,
  [out] PIDLIST_ABSOLUTE *ppidl
);

参数

[in] hwnd

类型:HWND

保留。

[in] csidl

类型: int

标识要定位的文件夹的 CSIDL 值。 特定系统上可能不存在与 CSIDL 关联的文件夹。

[in] hToken

类型: 句柄

可用于表示特定用户的 访问令牌 。 它通常设置为 NULL,但当存在多个用户被视为属于单个用户的文件夹时,可能需要它。 此类型最常用的文件夹是 “我的文档”。 当 hToken 为非 NULL 时,调用应用程序负责正确模拟。 它必须对特定用户具有适当的安全权限,并且用户的注册表配置单元当前必须装载。 有关访问控制问题的进一步讨论,请参阅访问控制

hToken 参数分配值 -1 表示默认用户。 这允许 SHGetFolderLocation 的客户端查找文件夹位置 (,例如默认用户的桌面文件夹) 。 创建任何新用户帐户时,默认用户用户配置文件将重复,并包含特殊文件夹,例如 “我的文档”“桌面”。 添加到“默认用户”文件夹的任何项目也会显示在任何新用户帐户中。

[in] dwFlags

类型:DWORD

[out] ppidl

类型: PIDLIST_ABSOLUTE*

指向项目标识符列表结构的指针的地址,该结构指定文件夹相对于桌面) 命名空间根目录 (的位置。 失败时,ppidl 参数设置为 NULL。 调用应用程序负责通过调用 ILFree 释放此资源。

返回值

类型: HRESULT

如果成功,则返回S_OK,否则返回错误值,包括:

返回代码 说明
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
nFolder 中的 CSIDL 有效,但文件夹不存在。
E_INVALIDARG
nFolder 中的 CSIDL 无效。

注解

注意 在 Windows Vista 中,此函数只是 SHGetKnownFolderIDList 的包装器。 CSIDL 值转换为其关联的 KNOWNFOLDERID, 并调用 SHGetKnownFolderIDList 。 新应用程序应使用已知的文件夹系统,而不是较旧的 CSIDL 系统,后者仅出于向后兼容性而受支持。
 
SHGetFolderLocationSHGetFolderPathSHGetSpecialFolderLocationSHGetSpecialFolderPath 函数是获取早于 Windows Vista 的系统上文件夹的句柄的首选方法。 直接以 %VariableName% 格式使用环境变量名称的 ExpandEnvironmentStrings 等函数可能不可靠。

此函数是 SHGetSpecialFolderLocation 的超集,包含在早期版本的 Shell 中。

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlobj_core.h (包括 Shlobj.h)
Library Shell32.lib
DLL Shell32.dll (5.0 或更高版本)

另请参阅

IKnownFolder::GetIDList