SHSetFolderPathW 函数 (shlobj_core.h)
已弃用。 向其 CSIDL 标识的系统文件夹分配新路径。
语法
HRESULT SHSetFolderPathW(
[in] int csidl,
[in] HANDLE hToken,
[in] DWORD dwFlags,
[in] LPCWSTR pszPath
);
参数
[in] csidl
类型: int
一个 CSIDL 值,该值标识要设置其路径的文件夹。 只有物理文件夹有效。 如果指定了虚拟文件夹,此函数将失败。
将 CSIDL_FLAG_DONT_UNEXPAND 值添加到 CSIDL,以确保字符串完全按照所提供的内容写入注册表。 如果未包含 CSIDL_FLAG_DONT_UNEXPAND 标志,则路径的某些部分可能会被环境字符串(如 %USERPROFILE%)替换。
[in] hToken
类型: HANDLE
可用于表示特定用户的 访问令牌 。 此参数通常设置为 NULL,在这种情况下,函数会尝试访问当前用户的文件夹实例。 但是,对于可以有多个用户但被视为属于单个用户的文件夹,可能需要为 hToken 分配值。 此类型最常用的文件夹是 Documents。
当 hToken 为非 null 时,调用应用程序负责正确模拟。 它必须具有特定用户的相应安全权限,包括TOKEN_QUERY和TOKEN_IMPERSONATE,并且用户的注册表配置单元当前必须装载。 有关访问控制问题的进一步讨论,请参阅访问控制。
[in] dwFlags
类型:DWORD
保留。 必须设置为 0。
[in] pszPath
类型: LPCTSTR
指向长度为 null 的字符串的指针MAX_PATH,该字符串包含文件夹的新路径。 此值不能为 NULL,字符串长度不能为零。
返回值
类型: HRESULT
返回标准 HRESULT 代码,包括以下内容:
返回代码 | 说明 |
---|---|
|
已成功更新文件夹的路径。 |
|
有几个错误条件会导致返回此值,其中包括:
|
注解
建议将路径表示为 Unicode 字符串,因为文件夹名称可能包含在 ANSI 中无法表达的 Unicode 字符。
注意
shlobj_core.h 标头将 SHSetFolderPath 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlobj_core.h (包括 Shlobj.h、Shlobj_core.h) |
Library | Shell32.lib |
DLL | Shell32.dll (5.0 或更高版本) |