createEnvironmentBlock 函数 (userenv.h)
检索指定用户的环境变量。 然后,可以将此块传递给 CreateProcessAsUser 函数。
语法
BOOL CreateEnvironmentBlock(
[out] LPVOID *lpEnvironment,
[in, optional] HANDLE hToken,
[in] BOOL bInherit
);
参数
[out] lpEnvironment
类型: LPVOID*
当此函数返回时,接收指向新环境块的指针。 环境块是以 null 结尾的 Unicode 字符串数组。 列表以两个 null 结尾, (\0\0) 。
[in, optional] hToken
类型: 句柄
用户令牌,从 LogonUser 函数返回。 如果这是主令牌,则令牌必须具有 TOKEN_QUERY 和 TOKEN_DUPLICATE 访问权限。 如果令牌是模拟令牌,则它必须具有 TOKEN_QUERY 访问权限。 有关详细信息,请参阅 Access-Token 对象的访问权限。
如果此参数为 NULL,则返回的环境块仅包含系统变量。
[in] bInherit
类型: BOOL
指定是否从当前进程的环境继承。 如果此值为 TRUE,则进程将继承当前进程的环境。 如果此值为 FALSE,则进程不会继承当前进程的环境。
返回值
类型: BOOL
如果成功,则为 TRUE;否则为 FALSE。 要获得更多的错误信息,请调用 GetLastError。
注解
若要在完成环境块后释放缓冲区,请调用 DestroyEnvironmentBlock 函数。
如果将环境块传递给 CreateProcessAsUser,则还必须指定 CREATE_UNICODE_ENVIRONMENT 标志。 在 CreateProcessAsUser 返回后,新进程具有环境块的副本,可以安全地调用 DestroyEnvironmentBlock。
仅当加载用户配置文件时,才会设置特定于用户的环境变量,例如 %USERPROFILE%。 若要加载用户的配置文件,请调用 LoadUserProfile 函数。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | userenv.h |
Library | Userenv.lib |
DLL | Userenv.dll |