哪个 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'
脚本需要将程序添加到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'