如何从注册表刷新我的 PATH 变量,而无需重新启动、注销或重新启动资源管理器?

Isz*_*szi 7 windows windows-registry environment-variables batch-file

%PATH%对注册表中的变量进行了一些更改。现在,我希望看到应用这些更改,而无需注销、重新启动或重新加载 Explorer。有没有办法做到这一点?

我宁愿通过某种可以放在.BAT文件末尾的命令来执行此操作,并且不想使用除全新安装操作系统随附的工具之外的任何工具。这需要与 Windows XP SP3 最低限度地兼容,并且应该一直工作到 Windows 7 x64 和 Server 2008 R2。

Dav*_*ave 7

  • 在系统属性中更改用户或系统路径。
  • 运行此批处理文件会使用 REG 查询拉取新的 PATH 变量。
  • FOR 命令从 REG 结果中解析 PATH 变量。
  • 当前 PATH 更新为注册表值。
  • 我将 ConEmu 用于我的控制台,它在每个新控制台上运行此批处理文件以刷新 PATH,因此无需重新启动。

@echo off
echo.
echo Refreshing PATH from registry

:: Get System PATH
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set syspath=%%B

:: Get User Path
for /f "tokens=2*" %%A in ('reg query "HKCU\Environment" /v Path') do set userpath=%%B

:: Set Refreshed Path
set PATH=%userpath%;%syspath%

echo Refreshed PATH
echo %PATH%
Run Code Online (Sandbox Code Playgroud)

``

ConEmu 中的任务命令参数使用 /k 开关启动 C:\Windows\System32\cmd.exe 以运行上面的 refreshpath.cmd 然后保持不变。这会更新路径并使控制台保持打开状态。

C:\Windows\System32\cmd.exe /k refreshpath.cmd

ConEmu 任务设置


Sha*_*ner 0

如果您尝试在 Windows 命令 shell 中使用路径变量的新值,您所需要做的就是关闭命令 shell 窗口并打开一个新窗口。新的命令 shell 将加载更新的路径变量。

所以我认为你原来问题的答案在某种程度上取决于你到底想在哪里看到改变生效......是否有一些特定的东西不适合你?

  • 已测试。这里运气不好。当注册表项更改时,CMD shell 被关闭,之后打开一个新的 shell,并且 PATH 更改似乎没有生效。 (3认同)
  • 这实际上是行不通的。它将加载路径变量的旧值。 (2认同)

归档时间:

查看次数:

55397 次

最近记录:

8 年,8 月 前