一尘不染

如何从Windows命令行永久更新PATH变量?

java

如果我set PATH=%PATH%;C:\\Something\\bin从命令行(cmd.exe)执行然后执行,echo %PATH%我会看到此字符串已添加到PATH。如果我关闭并打开命令行,则该新字符串不在PATH中。

将来如何从命令行永久更新PATH,而不仅限于当前进程?

我不想通过转到“系统属性”→“高级”→“环境变量”并在那里更新PATH来执行此操作。


阅读 1306

收藏
2020-03-18

共2个答案

一尘不染

有关如何执行此操作的文档可以在MSDN上找到。关键摘录是这样的:

要以编程方式添加或修改系统环境变量,请将它们添加到HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Environment注册表项中,然后广播一条WM_SETTINGCHANGE消息,其中lParam设置为字符串“ Environment”。这样,外壳程序之类的应用程序就可以获取你的更新。

请注意,你的应用程序将需要提升的管理员权限才能修改此密钥。

你可以在评论中指出你很乐意仅修改每个用户的环境。通过编辑HKEY_CURRENT_USER \ Environment中的值来执行此操作。和以前一样,请确保你广播了一条WM_SETTINGCHANGE消息。

你应该能够使用JNI注册表类在Java应用程序中轻松地完成此操作。

2020-03-18
一尘不染

你可以使用:

setx PATH "%PATH%;C:\\Something\\bin"

但是,setx会将存储的字符串截断为1024个字节,可能会损坏PATH。

/M将更改PATHin HKEY_LOCAL_MACHINE而不是HKEY_CURRENT_USER。换句话说,是系统变量,而不是用户变量。例如:

SETX /M PATH "%PATH%;C:\your path with spaces"

你必须记住,新的PATH在你当前的中不可见cmd.exe

但是,如果你查看注册表或使用新的注册表cmd.exe,则"set p"可以看到新值。

2020-03-18