通过批处理或Python永久修改用户的%PATH%环境variables

我一直在让我的用户手动设置PATH环境variables有困难,我正在寻找一种方法来自动执行此操作。 一个batch file将是可取的,因为这将需要他们自己运行(警告他们在做什么),但setup.py的补充也是可以接受的。

其他信息: SET只影响电stream和导数炮弹; 永久价值似乎被存储在registry的某个地方(我不敢践踏的地方)。

Solutions Collecting From Web of "通过批处理或Python永久修改用户的%PATH%环境variables"

正如David所说的那样,您可以从Windows资源工具包中获得SETX工具。

但是,我发现SETX有时会遇到麻烦(如崩溃)。 我还没有弄清楚到底是什么问题,但我怀疑这是一个尺寸问题(例如,如果你尝试设置一个变量 – 在我的情况下是PATH),这个值太大了,例如> 1024个奇数字符)。

我发现了另外两个可执行文件可以做同样的事情。 特别是我最喜欢的是Jonathan“Darka”Wilkes的SetEnv在CodeProject。 他已经使它非常有用,具有良好的功能,并且与所有Windows系统兼容 – 我也提供了一些功能。 🙂

另一个选择是,如果你愿意,可以手动(实际上是将项目添加到注册表中,然后将WM_SETTINGCHANGE广播到顶层窗口,或重新启动shell /重新启动)。 不过我认为在BATCH文件中SetEnv是最好的选择。 ;)

所以,由于我一直有困难让我的用户手动设置PATH,我正在寻找一种方法来自动执行此操作。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths (以及HKEY_CURRENT_USER\... )注册表项允许您将特定应用程序的路径附加到您的可执行文件名称。

每当给定名称的可执行文件启动时, 应用程序特定路径就会添加到该可执行文件的PATH环境变量中。

从这个网站 :

使用附加工具Setx.exe

它不是标准Windows XP安装程序的一部分,但Windows XP Service Pack 2支持工具中包含一个名为setx.exe的命令行工具。 此工具扩展了set命令,以便可以对环境变量进行永久更改。 例如,要将文件夹C:\ New Folder添加到路径,该命令将会是

 setx path "%PATH%;C:\New Folder" 

这听起来像它会为你想要做的工作。

我只是碰到这个问题,不喜欢任何可用的选项,所以我决定写我自己的解决方案。

(SetEnv会很好,但我不喜欢非自由许可证,我总是不喜欢不必调用一个子进程…我不介意调用SetEnv作为一个子进程,但根据维基百科,许可证它使用的是非自由的,因为它有某种“不做恶”的条款,在我看来这种合法的模糊限制总是一个滴答作响的定时炸弹。)

这是一个麻省理工学院授权的Python类,用于隐藏直接修改注册表并发送WM_SETTINGCHANGE的工作。 (适用于setup.py