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_QUERYTOKEN_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

另请参阅

CreateProcessAsUser

DestroyEnvironmentBlock

LogonUser

用户配置文件概述

用户配置文件参考