Windows 永久更改用户';通过批处理或Python访问%s%PATH%环境变量

Windows 永久更改用户';通过批处理或Python访问%s%PATH%环境变量,windows,batch-file,environment-variables,Windows,Batch File,Environment Variables,我一直很难让我的用户手动设置PATH环境变量,我正在寻找一种自动设置的方法。批处理文件更可取,因为这需要他们自己运行它(并警告他们正在做什么),但也可以在setup.py中添加一个批处理文件 其他信息:SET仅影响当前壳和派生壳;永久值似乎存储在注册表的某个地方(我不敢涉足的地方)。由此: 使用附加工具Setx.exe 它不是标准窗口的一部分 XP安装程序,但不是命令行工具 调用的setx.exe包含在 Windows XP Service Pack 2支持 工具。这个工具扩展了集合 命令,以便

我一直很难让我的用户手动设置PATH环境变量,我正在寻找一种自动设置的方法。批处理文件更可取,因为这需要他们自己运行它(并警告他们正在做什么),但也可以在
setup.py
中添加一个批处理文件

其他信息:
SET
仅影响当前壳和派生壳;永久值似乎存储在注册表的某个地方(我不敢涉足的地方)。

由此:

使用附加工具Setx.exe

它不是标准窗口的一部分 XP安装程序,但不是命令行工具 调用的setx.exe包含在 Windows XP Service Pack 2支持 工具。这个工具扩展了集合 命令,以便永久更改 可以创建环境变量。 例如,要添加文件夹C:\New 文件夹的路径,该命令将 是


这听起来好像能满足您的需要。

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

然而,我发现SETX有时会遇到麻烦(比如崩溃)。我还没有弄清楚到底是什么问题,但我怀疑这是一个大小问题(例如,在我的例子中,如果您试图设置一个变量,它是指向一个太大的值的路径,例如>1024个奇数字符)

我发现另外两个可执行文件可以做同样的事情。特别是我最喜欢的是CodeProject的Jonathan“Darka”Wilkes所写的。他使它非常有用,具有良好的功能,并且与所有Windows系统兼容—我还建议了一些功能。:)

另一种选择是,如果您愿意,可以手动执行(实际上是将项目添加到注册表,然后向顶级窗口广播WM_设置更改,或者重新启动shell/重新启动)。然而,我认为批处理文件中的SetEnv是最好的选择

因此,由于我一直难以让我的用户手动设置路径,我正在寻找一种自动设置路径的方法

HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App path
(以及
HKEY\u CURRENT\u USER\…
)注册表项允许您将特定于应用程序的路径附加到可执行文件名


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

我刚刚遇到了这个问题,不喜欢任何可用的选项,所以我决定编写自己的解决方案

(SetEnv本来是不错的,但我不喜欢非自由裁量许可证,我总是不喜欢调用子流程……我不介意将SetEnv作为子流程调用,但根据维基百科的说法,它使用的许可证是非自由裁量的,因为它有某种“不作恶”的功能在我看来,这种法律上模棱两可的限制永远是一颗滴答作响的定时炸弹。)


这里有一点可以隐藏直接修改注册表和发送WM_设置更改的工作。(适用于
setup.py

您仍然需要让他们安装SetEnv,但这是一个相对轻松的过程。这正是我的做法。你不必安装SetEnv,你只需将可执行文件放在与执行设置的批处理文件相同的目录中即可。我终于开始着手解决这个问题了。在wine中安装了SetEnv,取出可执行文件并将其放入我的程序dir中,编写了一个批处理文件来使用它,一切都很顺利。
setx path "%PATH%;C:\New Folder"