環境変数をWindowsマシン(デスクトップまたはサーバー)に追加し、そのマシンを再起動せずに使用できるようにします。
さまざまなアプリをホストする運用サーバーがあり、新しいアプリを実行するには特定の環境変数が必要だとします。ユーザーが他のアプリに接続している間は再起動しません。どのような選択肢がありますか?再起動までの待機時間オプションが好きではありません。より良い方法がなければなりません。私は何が欠けていますか?
環境変数をWindowsマシン(デスクトップまたはサーバー)に追加し、そのマシンを再起動せずに使用できるようにします。
さまざまなアプリをホストする運用サーバーがあり、新しいアプリを実行するには特定の環境変数が必要だとします。ユーザーが他のアプリに接続している間は再起動しません。どのような選択肢がありますか?再起動までの待機時間オプションが好きではありません。より良い方法がなければなりません。私は何が欠けていますか?
回答:
問題のコンピューターのメインの[プロパティ]ダイアログで変更を行うと、環境変数への変更はすぐに有効になります([マイコンピューター] | [プロパティ] | [詳細] | [環境変数]に移動します)。変更が保存されると、ExplorerはWM_SETTINGCHANGE
すべてのウィンドウにメッセージをブロードキャストして、変更を通知します。この後にExplorerを介して生成されたプログラムは、更新された環境を取得する必要がありますが、既に実行中のプログラムは設定変更メッセージを処理しない限り取得しません。
私はあなたの問題の説明から、あなたがこれに関してどんな特定の問題を抱えているのかを知ることができません。動作していない特定のシナリオについて詳しく教えてください。
このKB記事も役に立つかもしれません:環境変数をシステムに伝達する方法
runas /user:yourusername@yourdomain cmd
taskkill /f /im explorer.exe
explorer.exe
すべてのコマンドプロンプトを閉じた後、PATH
変数が本当に更新されたことがわかります。
すべてのコマンドプロンプトを閉じる必要があります。新しいコマンドプロンプトを再度開き、パスを入力すると、新しいデータが表示されます。
ctrl+alt+shift
ます。これにより、Windows Explorerが正常に終了します。Vista +では、Windowsのシャットダウンダイアログを見つけるのが難しくなります(ただし、少なくとも7の間(8と10については不明)のままです)、2番目の方法があります。[スタート]メニューの空の部分をCtrl + Shift +右クリックして、エクスプローラーの終了を選択します。8では、終了オプションは同じですが、スタートメニューではなくタスクバーを使用します。
この質問に対する最高の投票の答えについてコメントするのに十分な評判はありませんが、正確ではないことを述べたいと思います。この投稿でどの回避策を試しても、実際には何も機能しなかったため、私はこれを知っています。
その答えは中にリンクされているキロバイトの記事実際と述べています:
ただし、環境変数を変更してもすぐには変更されないことに注意してください。たとえば、変更後に別のコマンドプロンプトを起動すると、環境変数は以前の(現在ではなく)値を反映します。ログオフしてから再度ログオンするまで、変更は有効になりません。
コマンドプロンプトの再読み込み後に環境変数が以前の値にリセットされる部分は、Windows Server 2008で私が経験したこととまったく同じです。
記事は次のように述べています:
ログオフせずにこれらの変更を有効にするには、システム内のすべてのウィンドウにWM_SETTINGCHANGEメッセージをブロードキャストします。これにより、関心のあるアプリケーション(Windowsエクスプローラー、プログラムマネージャー、タスクマネージャー、コントロールパネルなど)が更新を実行できます。
これは、システム環境変数を変更した後にExplorerがWM_SETTINGCHANGEメッセージをブロードキャストすること、または実際に機能することを意味するものではありません。コマンドプロンプトからKBの記事で提案されていること(変更を直ちに伝達するため)をどのように行うかはわかりません。
環境を作成します。すぐに利用可能な変数:
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でテストおよび動作中
サービスの可能な解決策は、別のユーザー(LocalSystem、LocalService、NetworkService以外)として一時的にそれらを実行することです。たとえば、Apacheサービスの場合、これは問題なく機能します。サービスアカウントを変更するには、services.mscコンソールを開き、サービスを選択し、サービスのプロパティをクリックして、2番目のタブでユーザーのログオン資格情報を入力します。サービスを再起動すると、環境変数が最新の状態になります。
これがログに記録されているユーザーである場合、これは問題なく動作するはずです。現在のユーザーアカウントを使用している場合は、explorer.exeの再起動も必要になる場合があります。また、通常のユーザーアカウントとしてサービスを実行すると、セキュリティリスクが生じる可能性があることに注意してください。
まだこの回答を追加していないので、SETXコマンドを使用して再起動後も永続的なシステム変数を設定できることを述べたいと思います。
例えば
setx PATH "%PATH%;c:\temp\my\new\path"
上記は現在のコマンドウィンドウでは機能せず、有効になる前に新しいコマンドウィンドウを開く必要があることに注意してください。その結果、ユースケースに応じて; これを上記の他の手法のいずれかと組み合わせる必要がある場合があります。