哪个 Windows 注册表项存储 PATH 变量?

Which Windows Registry Key(s) store the PATH variable?

脚本需要将程序添加到Windows PATH。另一个脚本需要从 Windows PATH 中删除相同的程序。对于兼容性问题,脚本需要在 Windows 的大多数(如果不是全部)风格上工作。

Which registry key (or keys) consistently store the PATH on a wide range of Windows machine types?

例如,在我的 Windows 10 家庭版笔记本电脑上,PATH 存储在以下键的 Path 属性 中:

HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

但是另一个用户告诉我这个密钥在他或她的 Windows 机器上不可用。

那么关键位置可能性的完整列表是什么?

请注意,脚本直接针对键,因为对 PATH 的更改必须在运行时结束后保留​​。其他方法似乎只是在程序 运行 时临时更改 PATH。

在 PowerShell 中,使用 following method:

持续设置 PATH 环境
[Environment]::SetEnvironmentVariable( 'VARIABLE_NAME', 'VALUE', [EnvironmentVariableTarget]::Machine )

要删除环境变量,将环境变量值设置为$null:

[Environment]::SetEnvironmentVariable( 'VARIABLE_NAME', $null, [EnvironmentVariableTarget]::Machine )

至于为什么您的用户缺少该注册表项?这听起来像是一个更大的问题,因为 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 是存储和检索系统环境变量的地方。从 XP 开始就是这样,documentation states this as far back as .NET Framework 2.0.

如果某人的计算机上缺少该密钥,我敢打赌用户要么没有在正确的位置查找,要么可能是某种恶意软件造成的。


如果要在进程级别设置环境变量,如评论中所问,可以使用$env:变量在进程级别读取和设置环境变量:

$env:VARIABLE_NAME = 'VALUE'