如何从Windows命令行永久更新PATH变量?
如果我从命令行()执行,然后执行,我会看到这个字符串添加到PATH中。如果我关闭并打开命令行,则该新字符串不在 PATH 中。set PATH=%PATH%;C:\\Something\\bin
cmd.exe
echo %PATH%
如何从命令行永久更新将来所有进程的 PATH,而不仅仅是当前进程?
我不想通过转到系统属性→高级→环境变量并在那里更新PATH来执行此操作。
此命令必须从 Java 应用程序执行(请参阅我的另一个问题)。
如果我从命令行()执行,然后执行,我会看到这个字符串添加到PATH中。如果我关闭并打开命令行,则该新字符串不在 PATH 中。set PATH=%PATH%;C:\\Something\\bin
cmd.exe
echo %PATH%
如何从命令行永久更新将来所有进程的 PATH,而不仅仅是当前进程?
我不想通过转到系统属性→高级→环境变量并在那里更新PATH来执行此操作。
此命令必须从 Java 应用程序执行(请参阅我的另一个问题)。
您可以使用:
setx PATH "%PATH%;C:\\Something\\bin"
但是, 会将存储的字符串截断为 1024 个字节,从而可能损坏 PATH。setx
/M
将更改 in 而不是 。换句话说,系统变量,而不是用户的变量。例如:PATH
HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER
SETX /M PATH "%PATH%;C:\your path with spaces"
您必须记住,新的PATH在您当前的.cmd.exe
但是,如果您在注册表中或新的使用中查看,则可以看到新值。cmd.exe
"set p"
有关如何执行此操作的文档可以在 MSDN 上找到。关键提取是这样的:
要以编程方式添加或修改系统环境变量,请将它们添加到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment注册表项,然后广播
一条WM_SETTINGCHANGE
消息,并将 lParam 设置为字符串“Environment”。这允许应用程序(如 shell)获取更新。
请注意,您的应用程序需要提升的管理员权限才能修改此密钥。
您在注释中指出,您很乐意仅修改每用户环境。为此,请在HKEY_CURRENT_USER\环境中编辑值。与以前一样,请确保广播WM_SETTINGCHANGE
消息。
您应该能够使用 JNI 注册表类轻松地从 Java 应用程序中执行此操作。