如何在 Windows 10 上从非管理员帐户设置用户环境变量(例如 PATH)

如何在 Windows 10 上从非管理员帐户设置用户环境变量(例如 PATH)

如何在 Windows 10 上从非管理员帐户设置用户环境变量(例如 PATH)?

我知道有一个按钮可以实现我想要的功能: 看这里但当我点击它时,什么也没有发生。

你也可以查看这个论坛邮政对于另一个有同样问题的人来说。

我正在运行 Windows 10 Pro v1511 Build10586.545

编辑: 这是 Windows 10 的一个错误。更新到最新更新(周年更新)可以修复它。

答案1

您想要的命令是setx.exe(它是一个命令行程序)。用于setx /?获取使用信息,但对于您的用例,它归结为以下内容:

setx MYVAR "The value of my variable"

请注意,这setx不会更新正在运行的程序(即 CMD 或 Powershell)的当前环境变量;您还需要使用该set命令来更新 shell 中的变量。

另外两种方法可以实现此目的:

  1. 使用 PowerShell 调用 .NET 函数[System.Environment]::SetEnvironmentVariable(<varname>, <value>, [System.EnvironmentVariableTarget]::User)(您可以用1"user"替代[System.EnvironmentVariableTarget]::User;它是一个枚举)
  2. 直接编辑注册表。https://stackoverflow.com/questions/573817/where-are-environment-variables-stored-in-registry,位置为 HKCU\Environment。例如,您可以添加如下值(使用程序reg.exe):reg add /v <VARNAME> /d <VALUE>

如果您想要更新每个用户的 PATH,而又不想将所有用户(本地计算机)的 PATH 值添加到您的个人 PATH,那么您需要使用一些技巧。使用reg query[System.Environment]::GetEnvironmentVariable(<varname>, [System.EnvironmentVariableTarget]::User),您可以从注册表中获取当前值,而不是获取进程的 PATH 当前值(它是用户和计算机值的串联)。使用 PS,您甚至可以将此值设置为临时变量:

set mypath $([Environment]::GetEnvironmentVariable("Path", 1))创建一个名为“mypath”的临时(本地、非环境)变量,并将其设置为 PATH 环境变量的当前用户特定值(Windows 环境变量名不区分大小写)。

echo $mypath以确保您理解正确。

set mypath ($mypath + ';C:\foo\bar'); echo $mypath附加C:\foo\bar到临时变量并回显结果。

setx Path $mypath使用连接的字符串更新环境变量。

set $env:Path ($env:Path + ';C:\foo\bar')还可以更新当前的 PowerShell 会话,或者只是从 Windows 资源管理器(开始、任务栏等)启动一个新的会话。

相关内容