阻止Windows系统%PATH%附加到用户%PATH?


19

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

Windows环境变量

现在,问题在于如何PATH处理变量,以便您为用户PATH输入的值将自动附加到系统PATH,并且将是有效的PATH变量。

也就是说,我有

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

和(USER)PATH=C:\Program Files\Bar\bin(请注意,%PATH%此值中没有)

那么该用户产生的环境变量将是:

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

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

是否有一种正确的方法告诉Windows PATH用该用户的值完全覆盖该用户的变量,而不是将其附加到系统PATH变量中?

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


为什么不忽略USER部分。删除USER Path变量,然后将所有内容按照您希望的顺序放入SYSTEM Path变量中。
凯文·费根

1
@KevinFegan:好的,因为计算机上的某些服务依赖于 SYSTEM PATH,所以最好通过拥有一个不同的来为该特定用户帐户提供服务PATH。我知道有很多解决方法,但是我很想知道是否有任何现成的/ OS /注册表级别的东西可以实现此目的。
马丁

Answers:


3

如果您仅需要此命令即可用于命令提示符会话,请按照/programming/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%

0

我有同样的问题,这对我有用:

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

>reg query HKCU\Environment /v path

(在我的机器上)输出为:

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

但是然后您必须对此进行解析并使用相关部分。

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


-1

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

是一个有效的参考,我在此报告该页面的简单时间:

如果将相同名称的变量同时存储为“用户”和“机器环境”变量,则该用户变量将优先。如果创建了Session变量,它将优先于任何具有相同名称的User和/或Machine Environment变量。


这是一个有用的参考,但是您引用的第一句话是过分概括的。该PATH变量是一个例外(特例) -用户变量不会优先于系统变量。“会话变量”将优先于用户和系统预设变量,这是事实,但是如何为用户自动设置会话变量?  G-Wiz已回答了该问题,而且,AFAICS,您尚未在该答案中添加任何内容。
斯科特(Scott)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.