SetSearchPathMode 函数 (winbase.h)

设置 SearchPath 函数在查找文件时使用的每进程模式。

语法

BOOL SetSearchPathMode(
  [in] DWORD Flags
);

参数

[in] Flags

要使用的搜索模式。

含义
BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE
0x00000001
为进程启用安全进程搜索模式。
BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE
0x00010000
为进程禁用安全进程搜索模式。
BASE_SEARCH_PATH_PERMANENT
0x00008000
可选标志,可与 BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE 结合使用,使此模式永久用于此过程。 这是通过按位 OR 操作完成的:

(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE | BASE_SEARCH_PATH_PERMANENT)

此标志不能与 BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE 标志组合使用。

返回值

如果操作成功完成, SetSearchPathMode 函数将返回非零值。

如果操作失败, SetSearchPathMode 函数将返回零。 若要获得更多的错误信息,请调用 GetLastError 函数。

如果 SetSearchPathMode 函数因参数值无效而失败,则 GetLastError 函数返回的值将 ERROR_INVALID_PARAMETER

如果 SetSearchPathMode 函数由于当前状态和参数值的组合无效而失败,则 GetLastError 函数返回的值将 ERROR_ACCESS_DENIED。 有关详细信息,请参阅“备注”部分。

备注

如果尚未为当前进程成功调用 SetSearchPathMode 函数,则从系统注册表获取 SearchPath 函数使用的搜索模式。 有关详细信息,请参阅 SearchPath

为当前进程成功调用 SetSearchPathMode 函数后,系统会忽略系统注册表中的设置,转而改用最近成功设置的模式。

如果已成功为当前进程调用 SetSearchPathMode 函数,且 Flags 设置为 (BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE | BASE_SEARCH_PATH_PERMANENT),则会为调用进程永久设置安全模式。 尝试更改搜索模式的进程内 对 SetSearchPathMode 函数的任何后续调用都将 失败,并 ERROR_ACCESS_DENIED GetLastError 函数。

注意 由于设置安全搜索模式的生命周期内无法永久禁用,因此应仔细考虑使用安全搜索模式。 对于 DLL 开发尤其如此,DLL 的用户将受到此进程范围的设置的影响。
 
无法永久禁用安全搜索模式。

此函数不会修改系统注册表。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll
可再发行组件 在 Windows XP 上KB959426 SP2 及更高版本以及 Windows Server 2003 SP1 及更高版本

另请参阅

文件管理函数

SearchPath