116809751933310427
前言
Windows上配置环境变量本质是修改注册表
所有系统级环境变量的操作都需要管理员及以上权限
GUI方式配置环境变量
- 打开
环境变量窗口
控制面板\所有控制面板项\系统->高级系统设置->环境变量
- 右键
此电脑->属性->高级系统设置->环境变量
- 右键
开始菜单->设置->系统->系统信息->高级系统设置->环境变量

- 上半部分修改用户级环境变量,下半部分修改系统级环境变量
通过echo获取环境变量
查询指定环境变量
echo无法区分环境变量是进程级、用户级还是系统级,因为echo是从当前会话中查询指定环境变量
通过set命令配置环境变量
- 这种方式只能在CMD中使用,因为
set是CMD内置命令不是可执行程序
进程级
新增、修改进程级环境变量
删除进程级环境变量
查询所有环境变量
通过setx可执行程序配置环境变量
- 这种方式可以在CMD或PowerShell中使用,因为
setx是可执行程序
setx不能删除环境变量,只能将环境变量值置为空
用户级
新增、修改用户级环境变量
将用户级环境变量值置为空
系统级
新增、修改系统级环境变量
将用户级环境变量值置为空
通过 Env: 驱动器的方式配置环境变量
进程级
新增进程级环境变量
1
| New-Item -Path Env:\key -Value "value"
|
1
| New-Item Env:\key -Value "value"
|
1
| ni Env:\key -Value "value"
|
新增、修改进程级环境变量
1
| Set-Item -Path Env:\key "value"
|
1
| Set-Item Env:\key "value"
|
删除进程级环境变量
1
| Remove-Item -Path Env:\key
|
强制删除
1
| Remove-Item Env:\key -Force
|
查询指定进程级环境变量
只获取值
1
| (Get-Item Env:\key).Value
|
查询所有进程级环境变量
1
| Get-ChildItem -Path Env:
|
通过 .NET API 的方式配置环境变量
进程级
新增、修改进程级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", "value", "Process")
|
1
| [Environment]::SetEnvironmentVariable("key", "value", "Process")
|
删除进程级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", $null, "Process")
|
1
| [Environment]::SetEnvironmentVariable("key", $null, "Process")
|
查询指定进程级环境变量
1
| [System.Environment]::GetEnvironmentVariable("key", "Process")
|
1
| [Environment]::GetEnvironmentVariable("key", "Process")
|
用户级
新增、修改用户级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", "value", "User")
|
1
| [Environment]::SetEnvironmentVariable("key", "value", "User")
|
删除用户级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", $null, "User")
|
1
| [Environment]::SetEnvironmentVariable("key", $null, "User")
|
查询指定用户级环境变量
1
| [System.Environment]::GetEnvironmentVariable("key", "User")
|
1
| [Environment]::GetEnvironmentVariable("key", "User")
|
系统级
新增、修改系统级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", "value", "Machine")
|
1
| [Environment]::SetEnvironmentVariable("key", "value", "Machine")
|
删除系统级环境变量
1
| [System.Environment]::SetEnvironmentVariable("key", $null, "Machine")
|
1
| [Environment]::SetEnvironmentVariable("key", $null, "Machine")
|
查询指定系统级环境变量
1
| [System.Environment]::GetEnvironmentVariable("key", "Machine")
|
1
| [Environment]::GetEnvironmentVariable("key", "Machine")
|
通过注册表配置环境变量
用户级
新增、修改用户级环境变量
1
| reg add "HKCU\Environment" /v key /t REG_SZ /d "value" /f
|
删除用户级环境变量
1
| reg delete "HKCU\Environment" /v key /f
|
查询指定用户级环境变量
1
| reg query "HKCU\Environment" /v key
|
查询所有用户级环境变量
1
| reg query "HKCU\Environment"
|
系统级
新增、修改系统级环境变量
1
| reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v key /t REG_SZ /d "value" /f
|
删除系统级环境变量
1
| reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v key /f
|
查询指定系统级环境变量
1
| reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v key
|
查询所有系统级环境变量
1
| reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
|
完成
参考文献
知乎——Fu Kai