你在哪里设置变量。每个进程都会获得其父环境的副本。但是您不能在它们启动时只影响父进程的环境以及它们自己的子进程。
批处理文件使用它们在环境中运行的 cmd.exe。这是程序影响其父环境的唯一情况。
一个 cmd 的环境与另一个 cmd 的环境是分开的。
并且来自 Vista 的 Windows 软件开发工具包
环境变量
每个进程都有一个环境块,其中包含一组环境变量及其值。命令处理器提供 set 命令来显示其环境块或创建新的环境变量。命令处理器启动的程序继承命令处理器的环境变量。
默认情况下,子进程继承其父进程的环境变量。但是,您可以通过创建新环境块并将指向它的指针作为参数传递给 CreateProcess 函数来为子进程指定不同的环境。
每个环境块都包含以下格式的环境变量:
Var1=Value1\0
Var2=Value2\0
Var3=Value3\0
...
VarN=ValueN\0\0
环境变量的名称不能包含等号 (=)。进程的环境块的总大小不得超过 32,767 个字符。
GetEnvironmentStrings 函数返回一个指向调用进程的环境块的指针。这应该被视为只读块;不要直接修改。相反,使用 SetEnvironmentVariable 函数来更改环境变量。完成从 GetEnvironmentStrings 获得的环境块后,调用 FreeEnvironmentStrings 函数释放该块。
调用 SetEnvironmentVariable 对系统环境变量没有影响。用户可以使用控制面板添加或修改系统环境变量。要以编程方式添加或修改系统环境变量,请将它们添加到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 注册表项,然后广播 WM_SETTINGCHANGE 消息,并将 lParam 设置为字符串“Environment”。这允许应用程序(例如 shell)获取您的更新。请注意,此键中列出的环境变量的值限制为 1024 个字符。
GetEnvironmentVariable 函数判断调用进程的环境中是否定义了一个指定的变量,如果是,它的值是多少。