是否防止 Windows 系统 %PATH% 被添加到用户 %PATH 前面?

是否防止 Windows 系统 %PATH% 被添加到用户 %PATH 前面?

我知道如何设置系统或用户特定的环境变量:

Windows 环境变量

现在,问题是PATH变量被这样处理:你为用户 PATH 输入的值将是自动附加到系统 PATH,这将成为有效的 PATH 变量。

也就是说,假设我有

(系统)PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

和(用户)PATH=C:\Program Files\Bar\bin(请注意,此值不存在%PATH%

那么该用户的结果环境变量将是:

(有效的)PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

但是,我宁愿希望对于非常特定的 OS 用户帐户,PATH 环境变量应该将目录放在bar\binPATH 的开头而不是结尾。

有没有适当的方法来告诉 Windows 用PATH该用户的值完全覆盖用户变量而不是将其附加到系统PATH变量?

注意:显然,从批处理文件中,所有这些都不重要,因为您可以根据需要设置和调整 env.vars。

答案1

如果您只需要它在命令提示符会话中工作,请创建一个配置文件/初始化批处理文件并在注册表中对其进行配置,https://stackoverflow.com/questions/17404165/how-to-run-a-command-on-command-prompt-startup-in-windows.例如,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

然后只需修改该批处理文件中的 PATH 即可。例如,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%

答案2

我遇到了同样的问题并且这对我有用:

您可以通过以下方式获取“用户路径变量”:

>reg query HKCU\Environment /v path

输出(在我的计算机上)是:

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

但随后您必须解析它并使用相关部分。

我在这里阅读了解决方案这里并在我的计算机上进行了测试。

答案3

我不知道如何忽略系统变量,但我知道如果您使用会话变量(通过SET命令),它们将优先于其他变量。因此您可以使用SET PATH=C:\Program Files\Bar\bin指令,并且您想要的路径将是变量的第一部分。

这里是一个有效的参考,我在这里报告该页面上的一个简单的时期:

如果将同名变量存储为用户和机器环境变量,则用户变量优先。如果创建了会话变量,则该变量优先于任何同名的用户和/或机器环境变量。

相关内容