web-dev-qa-db-ja.com

エクスプローラを再起動、ログオフ、または再起動せずに、レジストリからPATH変数を更新するにはどうすればよいですか?

レジストリの%PATH%変数にいくつかの変更を加えました。ここで、Explorerのログオフ、再起動、または再読み込みを行わずに、これらの変更が適用されることを確認します。これを行う方法はありますか?

.BATファイルの最後に置くことができる何らかのコマンドを使用してこれを行い、新規インストールでOSに付属しているツール以外のツールを使用したくありません。これは、Windows XP SP3との最小限の互換性が必要であり、Windows 7 x64およびServer 2008 R2まで機能します。

6
Iszi
  • システムのプロパティでユーザーまたはシステムのPATHを変更します。
  • このバッチファイルを実行すると、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%

「」

ConEmuのタスクCommandsパラメーターは、/ kスイッチを指定してC:\ Windows\System32\cmd.exeを起動し、上記のrefreshpath.cmdを実行して、そのままにします。 。これによりパスが更新され、コンソールは開いたままになります。

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

ConEmu Task settings

5
Dave

Windowsコマンドシェル内からパス変数の新しい値を使用しようとしている場合は、コマンドシェルウィンドウを閉じて新しいウィンドウを開くだけで済みます。新しいコマンドShellは、更新されたパス変数を読み込みます。

ですから、元の質問に対する答えは、変更が有効になるのを正確にどこで見ようとしているのかによって異なると思います...うまくいかない具体的なことはありますか?

1
Shannon Wagner