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

19 浏览
0 Comments

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

如果我在命令行(cmd.exe)中执行set PATH=%PATH%;C:\\\\Something\\\\bin,然后执行echo %PATH%,我会看到该字符串添加到了PATH中。如果我关闭并重新打开命令行,那么这个新字符串不会在PATH中出现。

如何从命令行永久更新PATH,对未来的所有进程都生效,而不仅仅是当前进程?

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

这个命令必须从一个Java应用程序中执行(请参阅我的另一个问题)。

admin 更改状态以发布 2023年5月20日
0
0 Comments

如何完成这一操作的说明可以在MSDN找到。关键信息如下:

要以编程方式添加或修改系统环境变量,将它们添加到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment注册表键中,然后广播一个lParam设置为字符串“Environment”的WM_SETTINGCHANGE消息。这样,应用程序(例如shell)就可以获取您的更新。

请注意,您的应用程序需要具有提升的管理员权限才能修改此键。

您在评论中表示,只需修改每个用户的环境。通过编辑HKEY_CURRENT_USER\Environment 中的值来完成此操作。如以前一样,确保广播一个WM_SETTINGCHANGE消息。

您应该可以使用JNI注册表类轻松地从Java应用程序中完成此操作。

0
0 Comments

你可以使用:

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

然而,setx 会将存储的字符串截断为1024个字节,可能破坏 PATH

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

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

你必须记住,新的 PATH 对于当前的 cmd.exe 不可见。

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

0