在 Windows 中查看和设置环境变量的命令

在 Windows 中查看和设置环境变量的命令

目次

概要变量记法说明Step 1: 环境变量的作用域与存储位置进程、用户、系统是不同层级Step 2: 在 CMD 中使用 %VAR% 查看和设置环境变量2-1. 列出进程环境变量2-2. 查看进程环境变量2-3. 临时设置进程环境变量(仅当前 CMD 会话)2-4. 持久化设置(使用 setx)基本语法用户作用域(默认)系统作用域(/M 必须,需管理员)Step 3: 在 CMD 中查看用户/系统环境变量的准确方法用户环境变量(HKCU)系统环境变量(HKLM)Step 4: 安全修改 PATH(使用 CMD 时的注意事项)Step 5: 在 PowerShell 中使用 $env:VAR 查看和设置变量5-1. 列出进程环境变量5-2. 查看进程环境变量5-3. 临时设置进程环境变量Step 6: 在 PowerShell 中查看用户/系统环境变量(推荐做法)用户环境变量(HKCU)系统环境变量(HKLM)Step 7: 使用 PowerShell 持久化设置(.NET API / 推荐)用户作用域(User)系统作用域(Machine,需管理员)Step 8: 使用 .NET API 安全修改 PATH(强烈推荐)Step 9: 删除环境变量9-1. 删除进程级变量(仅当前 PowerShell 会话)9-2. 删除持久化变量(删除注册表键值)用户变量系统变量(需管理员)Step 10: 应用并验证设置10-1. 在当前进程中验证10-2. 在 CMD 中验证10-3. 将持久化值立即加载到当前 PowerShell 会话Step 11: 批量设置多条环境变量(用户/系统)总结

概要

Windows 环境变量是通过进程启动时创建的环境块(environment block)进行引用的。本文将准确梳理环境变量的作用域(进程、用户、系统)、持久化机制、在 CMD 和 PowerShell 中的查看与设置方法,并重点解释“用户环境变量与系统环境变量有何不同,它们分别是如何被看到的”。

变量记法说明

变量名

示例

说明

<>

PATH

要操作的环境变量名

<>

C:\Tools

要设置的值

Step 1: 环境变量的作用域与存储位置

类型

存储位置

作用范围

持久性

备注

进程环境变量

内存

仅当前进程

临时

CMD: set / PowerShell: $env:

用户环境变量

HKCU\Environment

当前用户

持久

setx / .NET API

系统环境变量(Machine)

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

所有用户

持久

setx /M / .NET API(需管理员)

进程、用户、系统是不同层级

进程环境变量:仅对当前 Shell / 进程有效

用户环境变量:仅对当前用户有效

系统环境变量:对所有用户有效

PATH 通常表现为「系统 PATH + 用户 PATH」拼接后的结果

由于“查看的位置不同,看到的内容也不同”,在设置变量之前必须先明确目标作用域。

Step 2: 在 CMD 中使用 %VAR% 查看和设置环境变量

2-1. 列出进程环境变量

set

2-2. 查看进程环境变量

echo %<>%

2-3. 临时设置进程环境变量(仅当前 CMD 会话)

set <>=<>

2-4. 持久化设置(使用 setx)

基本语法

setx <> "<>"

用户作用域(默认)

setx <> "<>"

系统作用域(/M 必须,需管理员)

setx <> "<>" /M

setx 的特点

对当前 CMD 会话不生效(需要新开会话)

含 %PATH% 的值会在执行时被展开并以固定文本保存

PATH 长度受限,可能发生截断(不推荐用来修改 PATH)

Step 3: 在 CMD 中查看用户/系统环境变量的准确方法

用户环境变量(HKCU)

reg query HKCU\Environment

系统环境变量(HKLM)

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

通过 reg query 可以按作用域查看“原始值”,方便确认 PATH 是否被拼接、变量是否被覆盖等。

Step 4: 安全修改 PATH(使用 CMD 时的注意事项)

下面是一个危险示例,不推荐使用:

# setx PATH "%PATH%;C:\Tools"

原因:

%PATH% 会被立刻展开并以纯文本固定保存

REG_EXPAND_SZ 可能被转换为 REG_SZ,导致 %SystemRoot% 等占位符丢失

PATH 过长时可能被截断

PATH 修改应优先使用 PowerShell + .NET API(见后文),不要用 setx 直接拼接。

Step 5: 在 PowerShell 中使用 $env:VAR 查看和设置变量

5-1. 列出进程环境变量

Get-ChildItem Env:

5-2. 查看进程环境变量

$env:<>

5-3. 临时设置进程环境变量

$env:<> = "<>"

Step 6: 在 PowerShell 中查看用户/系统环境变量(推荐做法)

用户环境变量(HKCU)

Get-ItemProperty "HKCU:\Environment"

系统环境变量(HKLM)

Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

Step 7: 使用 PowerShell 持久化设置(.NET API / 推荐)

用户作用域(User)

[System.Environment]::SetEnvironmentVariable("<>","<>","User")

系统作用域(Machine,需管理员)

[System.Environment]::SetEnvironmentVariable("<>","<>","Machine")

这种方式的优点:

避免 PATH 被截断

能保持 REG_EXPAND_SZ 类型(保留 %SystemRoot% 等占位符)

修改过程更安全、可控

Step 8: 使用 .NET API 安全修改 PATH(强烈推荐)

$add = "C:\Tools"

$current = [System.Environment]::GetEnvironmentVariable("PATH","Machine")

$new = ($current.TrimEnd(';') + ';' + $add).Trim(';')

[System.Environment]::SetEnvironmentVariable("PATH",$new,"Machine")

Step 9: 删除环境变量

9-1. 删除进程级变量(仅当前 PowerShell 会话)

Remove-Item Env:<> -ErrorAction SilentlyContinue

9-2. 删除持久化变量(删除注册表键值)

用户变量

Remove-ItemProperty -Path "HKCU:\Environment" -Name "<>" -ErrorAction SilentlyContinue

系统变量(需管理员)

Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "<>" -ErrorAction SilentlyContinue

Step 10: 应用并验证设置

10-1. 在当前进程中验证

Get-ChildItem Env:<>

10-2. 在 CMD 中验证

echo %<>%

10-3. 将持久化值立即加载到当前 PowerShell 会话

$env:<> = [System.Environment]::GetEnvironmentVariable("<>","User")

Step 11: 批量设置多条环境变量(用户/系统)

# 用户环境变量

$vars = @{

"APPDATA_DIR" = "C:\AppData"

"LOG_PATH" = "C:\Logs"

"TOOLS" = "C:\Tools"

}

foreach ($v in $vars.GetEnumerator()) {

[System.Environment]::SetEnvironmentVariable($v.Key,$v.Value,"User")

}

# 系统环境变量(需管理员)

$sysVars = @{

"JAVA_HOME" = "C:\Program Files\Java\<>"

}

foreach ($v in $sysVars.GetEnumerator()) {

[System.Environment]::SetEnvironmentVariable($v.Key,$v.Value,"Machine")

}

总结

进程 / 用户 / 系统 环境变量是彼此独立存在的。

CMD 与 PowerShell 中“看见”的变量作用域可能不同(尤其是 PATH)。

要准确区分用户与系统环境变量,应直接检查 HKCU/HKLM。

setx 虽能持久化,但对 PATH 风险较大,不推荐用于 PATH 操作。

使用 .NET API(SetEnvironmentVariable)是最安全、最可控的做法。

相关新闻

手机淘宝商家怎么发货?怎么发布商品?
365体育官网登录

手机淘宝商家怎么发货?怎么发布商品?

🕒 10-05 👽 9032
企业培训实施流程图解:从规划到执行全过程
365体育官网登录

企业培训实施流程图解:从规划到执行全过程

🕒 08-12 👽 9059
命运冠位指定坂田金时强在哪 坂田金时小解析
365体育官网登录

命运冠位指定坂田金时强在哪 坂田金时小解析

🕒 07-05 👽 8509
2017世界棒球經典賽程全出爐
帕尼尼球星卡FIFA365

2017世界棒球經典賽程全出爐

🕒 12-11 👽 4680
新春活动预更新(延期)
帕尼尼球星卡FIFA365

新春活动预更新(延期)

🕒 01-23 👽 1120
消费者购买决策:客户如何决定购买?
365bet足球直播

消费者购买决策:客户如何决定购买?

🕒 07-17 👽 9508