脚本需要将程序添加到 Windows PATH。 另一个脚本需要从 Windows 路径中删除相同的程序。 对于兼容性问题,该脚本需要在大多数(如果不是全部(版本的 Windows 上运行。
哪个注册表项(或多个注册表项(一致地将 PATH 存储在各种 Windows 计算机类型上?
例如,在我的 Windows 10 家庭版笔记本电脑上,PATH 存储在以下项的Path
属性中:
HKLM:SYSTEMCurrentControlSetControlSession ManagerEnvironment
但是另一个用户告诉我,这个密钥在他或她的Windows机器上不可用。
那么,关键位置可能性的完整列表是什么?
请注意,脚本直接面向键,因为对 PATH 的更改必须在运行时结束后保留。 其他方法似乎只是在程序运行时暂时更改 PATH。
在 PowerShell 中,使用以下方法持久设置PATH
环境:
[Environment]::SetEnvironmentVariable( 'VARIABLE_NAME', 'VALUE', [EnvironmentVariableTarget]::Machine )
要删除环境变量,请将环境变量值设置为$null
:
[Environment]::SetEnvironmentVariable( 'VARIABLE_NAME', $null, [EnvironmentVariableTarget]::Machine )
至于为什么您的用户缺少该注册表项?这听起来像是一个更大的问题,因为HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment
是存储和检索系统环境变量的位置。自XP以来一直如此,文档早在.NET Framework 2.0中就指出了这一点。
如果某人的机器上缺少该密钥,我敢打赌用户要么没有在正确的位置寻找,要么可能是某种恶意软件的原因。
如果要在流程级别设置环境变量,如注释中所述,可以使用$env:
变量在流程级别读取和设置环境变量:
$env:VARIABLE_NAME = 'VALUE'