web-dev-qa-db-ja.com

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

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

さまざまなアプリをホストする本番サーバーがあり、新しいアプリを実行するには特定の環境変数が必要だとします。ユーザーが他のアプリに接続している間は再起動したくありません。どのような選択肢がありますか? wait-until-a-good-time-to-rebootオプションが気に入らない。もっと良い方法があるはずです。何が欠けていますか?

186
Chad Braun-Duin

問題のコンピューターのメインの[プロパティ]ダイアログ([マイコンピューター] | [プロパティ] | [詳細] | [環境変数]に移動)から変更を加えた場合、環境変数の変更はすぐに反映されます。変更が保存された後、エクスプローラはWM_SETTINGCHANGEすべてのウィンドウにメッセージを送り、変更を通知します。設定変更メッセージを処理しない限り、既に実行中のプログラムは取得されませんが、この後にエクスプローラーを介して生成されたプログラムは更新された環境を取得します。

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

このKB記事も役立つ場合があります。 環境変数をシステムに伝達する方法

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

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

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

66

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

20
nedm

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

その回答でリンクされているKB記事 は実際には次のように述べています。

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

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

記事は続けて言う:

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

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

16
testworks

環境を作成します。すぐに利用できる変数:

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でテストおよび動作

4
Pedro Sousa

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

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

3
Odin

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

例えば.

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

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

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

1
Doug