每个进程都有一个环境块,其中包含一组环境变量及其值。 有两种类型的环境变量:每个用户) 设置的用户环境变量 (, (为每个人) 设置的系统环境变量。

默认情况下,子进程继承其父进程的环境变量。 命令处理器启动的程序继承命令处理器的环境变量。 若要为子进程指定不同的环境,请创建新的环境块,并将指向它的指针作为参数传递给 CreateProcess 函数。

命令处理器提供 set 命令以显示其环境块或创建新的环境变量。 还可以从 控制面板 中选择 “系统 ”,选择 “高级系统设置 ”,然后单击“环境变量”来查看或修改 环境变量

每个环境块包含以下格式的环境变量:

Var1 = Value1 \0
Var2 = Value2 \0
Var3 = Value3 \0
VarN = ValueN \0\0

环境变量的名称不能包含等号 (=) 。

GetEnvironmentStrings 函数返回指向调用进程的环境块的指针。 这应被视为只读块;不要直接修改它。 请改用 SetEnvironmentVariable 函数更改环境变量。 完成从 GetEnvironmentStrings 获取的环境块后,调用 FreeEnvironmentStrings 函数以释放该块。

调用 SetEnvironmentVariable 不会影响系统环境变量。 若要以编程方式添加或修改系统环境变量,请将其添加到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 注册表项,然后将 lParam 设置为字符串“Environment”的 WM_SETTINGCHANGE 消息广播。 这样,应用程序(如 shell)就可以选取更新。

用户定义的环境变量的最大大小为 32,767 个字符。 环境块的大小没有技术限制。 但是,根据用于访问块的机制,存在实际限制。 例如,批处理文件无法设置长度超过最大命令行长度的变量。

Windows Server 2003 和 Windows XP: 进程的环境块的最大大小为 32,767 个字符。 从 Windows Vista 和 Windows Server 2008 开始,环境块的大小没有技术限制。

GetEnvironmentVariable 函数确定指定变量是否在调用进程的环境中定义,如果是,则确定其值是什么。

若要检索给定用户的环境块的副本,请使用 CreateEnvironmentBlock 函数。

若要扩展环境变量字符串,请使用 ExpandEnvironmentStrings 函数。

更改环境变量

用户环境变量