再起動せずにWindows環境変数を追加するにはどうすればよいですか?


181

環境変数をWindowsマシン(デスクトップまたはサーバー)に追加し、そのマシンを再起動せずに使用できるようにします。

さまざまなアプリをホストする運用サーバーがあり、新しいアプリを実行するには特定の環境変数が必要だとします。ユーザーが他のアプリに接続している間は再起動しません。どのような選択肢がありますか?再起動までの待機時間オプションが好きではありません。より良い方法がなければなりません。私は何が欠けていますか?


2
これと同じ問題がありました。explorer.exeプロセスを強制終了すると変数が更新され、動作することをどこかで読みました。次に、タスクマネージャーからエクスプローラーを実行する必要がありました。
ユーザー19694

1
パス変数を更新するには、コマンドプロンプトを閉じて再度開く必要があります。変数は、cmdの起動時にロードされます。
NiLInfinite 14年

回答:


162

問題のコンピューターのメインの[プロパティ]ダイアログで変更を行うと、環境変数への変更はすぐに有効になります([マイコンピューター] | [プロパティ] | [詳細] | [環境変数]に移動します)。変更が保存されると、ExplorerはWM_SETTINGCHANGEすべてのウィンドウにメッセージをブロードキャストして、変更を通知します。この後にExplorerを介して生成されたプログラムは、更新された環境を取得する必要がありますが、既に実行中のプログラムは設定変更メッセージを処理しない限り取得しません。

私はあなたの問題の説明から、あなたがこれに関してどんな特定の問題を抱えているのかを知ることができません。動作していない特定のシナリオについて詳しく教えてください。

このKB記事も役に立つかもしれません:環境変数をシステムに伝達する方法


2
実行中のサービスなどでこの動作を見たに違いないと思います。上記の方法を使用して、新しい環境変数を追加しました。次に、新しいコマンドプロンプトを開き、コマンド "echo%<myvar>%。を使用した後、値を確認することができました。答えてくれてありがとう。
Chad Braun-Duin

5
PowerShellユーザーにとって、このスニペットは役に立つかもしれません:poshcode.org/2049
Anders Zommarin

8
cmdを使用している場合、env変数を変更すると再起動する必要があります
ニールマクギガン

4
PCにScalaをインストールしましたが、PATHは更新されませんでした。おそらく、MSIはWM_SETTINGCHANGEメッセージをブロードキャストしませんでした。ダミーのSYSTEM変数、すなわちCHANGE_TO_UPDATE = zを追加しました。これを更新してWM_SETTINGCHANGEメッセージをトリガーします-問題解決
ダレンビショップ

3
リンクの404 :-(
サモス

63
  1. コマンドプロンプトで次を入力します。 runas /user:yourusername@yourdomain cmd
  2. 新しいコマンドプロンプトが開き、次のように入力します。 taskkill /f /im explorer.exe
  3. 次に入力します: explorer.exe

すべてのコマンドプロンプトを閉じた後、PATH変数が本当に更新されたことがわかります。

すべてのコマンドプロンプトを閉じる必要があります。新しいコマンドプロンプトを再度開き、パスを入力すると、新しいデータが表示されます。


6
このページのすべての答えのうち、これが実際に私のために働いた唯一のものです。ありがとうございました!!
coredumperror

2
これは私のために働いた。問題は、(長いパスを入力する手間を省くために)エクスプローラーでcmdを実行すると、すべてのエクスプローラーウィンドウを閉じてもエクスプローラーが閉じられないことだと思います。解決策をありがとう:)
スティーブマク14

私のために働いた。また、タスクマネージャを使用して、エクスプローラタスクを強制終了して再起動することもできます([ファイル]> [新しいタスクを実行])。
アダビロン

7
あー プロセスの1つがハングしない限り、windows explorerを強制終了しないでください。代わりに、Windowsのシャットダウンダイアログを開き、を押しながらキャンセルしctrl+alt+shiftます。これにより、Windows Explorerが正常に終了します。Vista +では、Windowsのシャットダウンダイアログを見つけるのが難しくなります(ただし、少なくとも7の間(8と10については不明)のままです)、2番目の方法があります。[スタート]メニューの空の部分をCtrl + Shift +右クリックして、エクスプローラーの終了を選択します。8では、終了オプションは同じですが、スタートメニューではなくタスクバーを使用します。
ケビンキャスカート

1
+1これはWindows 7の魅力として機能します。参考までに、CTRL + ALT + SHIFTを使用し、Windowsタスクマネージャーからすべてのexplorer.exeプロセスを強制終了し、[新しいタスク ]ボタンを押して再び開始しました。
マルコデマイオ

19

覚えておくべきことの1つは、多くのプログラムは最初に起動したときに環境変数を取得するため、ウィンドウを再起動する必要はないかもしれませんが、一部のプログラムは新しい変数を使用できるようになる前です。これの良い例は、PATHを追加した後に新しいコマンドプロンプトウィンドウを開く必要があることです(はい、私はこれに失敗しました)。


3
この問題はすべてのサービスに影響します。再起動されたサービスでも新しい環境変数は表示されません。
ギメル2009年

1
svchostプロセスを共有しているためではないのですか?
マーク・ソウル

16

この質問に対する最高の投票の答えについてコメントするのに十分な評判はありませんが、正確ではないことを述べたいと思います。この投稿でどの回避策を試しても、実際には何も機能しなかったため、私はこれを知っています。

その答えは中にリンクされているキロバイトの記事実際と述べています:

ただし、環境変数を変更してもすぐには変更されないことに注意してください。たとえば、変更後に別のコマンドプロンプトを起動すると、環境変数は以前の(現在ではなく)値を反映します。ログオフしてから再度ログオンするまで、変更は有効になりません。

コマンドプロンプトの再読み込み後に環境変数が以前の値にリセットされる部分は、Windows Server 2008で私が経験したこととまったく同じです。

記事は次のように述べています:

ログオフせずにこれらの変更を有効にするには、システム内のすべてのウィンドウにWM_SETTINGCHANGEメッセージをブロードキャストします。これにより、関心のあるアプリケーション(Windowsエクスプローラー、プログラムマネージャー、タスクマネージャー、コントロールパネルなど)が更新を実行できます。

これは、システム環境変数を変更した後にExplorerがWM_SETTINGCHANGEメッセージをブロードキャストすること、または実際に機能することを意味するものではありません。コマンドプロンプトからKBの記事で提案されていること(変更を直ちに伝達するため)をどのように行うかはわかりません。


1
これは私にとって正しい唯一の答えです。Explorerをハードな方法で、または「適切な」方法で殺すことを含め、他のどれも違いはありません。
ハシム

4

環境を作成します。すぐに利用可能な変数:

1. Open a shell

変更する環境変数に応じて、次の手順を実行します(最近インストールしたアプリケーションの新しいPATHを追加すると仮定します)。そのため、シェルプロンプトで次のように入力します。

2. PATH=%PATH%;C:\type\your\new\path\here

新しいパスが環境変数に追加されたことを確認します

3. echo %PATH%

できた

再起動時に変数を使用可能にする

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

Windows 7/10でテストおよび動作中


3

サービスの可能な解決策は、別のユーザー(LocalSystem、LocalService、NetworkService以外)として一時的にそれらを実行することです。たとえば、Apacheサービスの場合、これは問題なく機能します。サービスアカウントを変更するには、services.mscコンソールを開き、サービスを選択し、サービスのプロパティをクリックして、2番目のタブでユーザーのログオン資格情報を入力します。サービスを再起動すると、環境変数が最新の状態になります。

これがログに記録されているユーザーである場合、これは問題なく動作するはずです。現在のユーザーアカウントを使用している場合は、explorer.exeの再起動も必要になる場合があります。また、通常のユーザーアカウントとしてサービスを実行すると、セキュリティリスクが生じる可能性があることに注意してください。


1

まだこの回答を追加していないので、SETXコマンドを使用して再起動後も永続的なシステム変数を設定できることを述べたいと思います。

例えば

setx PATH "%PATH%;c:\temp\my\new\path"

上記は現在のコマンドウィンドウでは機能せず、有効になる前に新しいコマンドウィンドウを開く必要があることに注意してください。その結果、ユースケースに応じて; これを上記の他の手法のいずれかと組み合わせる必要がある場合があります。

詳細については、次のURLを参照してください


動作しません:/「無効な構文」
Joe DF

1
今すぐやってみて下さい。どうやら二重引用符が必要でした。
ダグ

ありがとう、ええ、私は....切り捨ての警告が出るので、それを追加することはできません... :(
Joe DF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.