sviluppo-web-qa.it

Come si aggiunge una variabile di ambiente Windows senza riavviare?

Vorrei aggiungere una variabile d'ambiente a una macchina Windows (desktop o server) ed essere in grado di usarla senza riavviare quella macchina.

Supponi di avere un server di produzione che ospita una varietà di app e che una nuova app necessita di una particolare variabile di ambiente per funzionare. Non vuoi riavviarlo mentre gli utenti sono connessi ad altre tue app. Che scelte hai? Non mi piace l'opzione wait-until-a-good-time-to-reboot. Deve esserci un modo migliore. Cosa mi sto perdendo?

186
Chad Braun-Duin

Le modifiche alle variabili di ambiente dovrebbero avere effetto immediato, se si effettua la modifica tramite la finestra di dialogo Proprietà principale per il computer in questione (andare su Risorse del computer | Proprietà | Avanzate | Variabili di ambiente). Dopo che le modifiche sono state salvate, Explorer trasmette un WM_SETTINGCHANGE messaggio a tutte le finestre per informarli della modifica. Tutti i programmi generati tramite Explorer dopo questo dovrebbero ottenere l'ambiente aggiornato, anche se i programmi già in esecuzione non lo faranno, a meno che non gestiscano il messaggio di modifica delle impostazioni.

Non sono in grado di dire dalla descrizione del tuo problema quale specifico problema stai riscontrando con questo. Puoi dirci di più sullo scenario specifico che non funziona?

Questo articolo KB può anche essere utile: Come propagare le variabili di ambiente al sistema

166
Charlie
  1. In un prompt dei comandi digitare: runas /user:[email protected] cmd
  2. Si aprirà un nuovo prompt cmd, quindi digitare: taskkill /f /im Explorer.exe
  3. Quindi digitare: Explorer.exe

Ora dopo aver chiuso tutti i prompt dei comandi, vedrai che la variabile PATH è stata veramente aggiornata.

Tutti i prompt dei comandi devono essere chiusi. Riapri un nuovo prompt dei comandi, digita path e vedrai i nuovi dati.

66

Una cosa da tenere a mente è che molti programmi ottengono le variabili ambientali al primo avvio, quindi mentre Windows potrebbe non aver bisogno di un riavvio, alcuni programmi potrebbero prima che possano utilizzare le nuove variabili. Un buon esempio di ciò è dover aprire una nuova finestra del prompt dei comandi dopo aver aggiunto un PERCORSO (sì, sono stato inciampato da questo).

20
nedm

Anche se non ho abbastanza reputazione per commentare la risposta più votata a questa domanda, vorrei affermare che non è esattamente corretto. Lo so perché, indipendentemente dalla soluzione che ho provato in questo post, nulla ha funzionato.

Il articolo di KB collegato in quella risposta afferma in realtà che:

Tuttavia, si noti che le modifiche alle variabili di ambiente non comportano cambiamenti immediati. Ad esempio, se si avvia un altro prompt dei comandi dopo aver apportato le modifiche, le variabili di ambiente rifletteranno i valori precedenti (non quelli correnti). Le modifiche non avranno effetto fino alla disconnessione e al successivo accesso.

La parte relativa alle variabili di ambiente che si ripristinano ai valori precedenti dopo aver ricaricato il comando Prompt è esattamente ciò che ho riscontrato in Windows Server 2008.

L'articolo continua dicendo:

Per effettuare queste modifiche senza disconnettersi, trasmettere un messaggio WM_SETTINGCHANGE a tutte le finestre del sistema, in modo che qualsiasi applicazione interessata (come Windows Explorer, Program Manager, Task Manager, Pannello di controllo e così via) possa eseguire un aggiornamento.

Ciò non implica che Explorer trasmette un messaggio WM_SETTINGCHANGE dopo aver modificato le variabili di ambiente di sistema o che funzioni effettivamente. Non sono sicuro di come faresti ciò che è suggerito nell'articolo KB (per propagare immediatamente le modifiche) dal comando Prompt.

16
testworks

Crea l'inv. variabile disponibile subito:

1. Open a Shell

A seconda della variabile di ambiente che si desidera modificare, procedere come segue: (supporre di voler aggiungere un nuovo PERCORSO per un'applicazione installata di recente) Quindi, al prompt della shell, digitare quanto segue:

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

controlla che il tuo nuovo percorso sia stato aggiunto alla variabile d'ambiente

3. echo %PATH%

Fatto.

Rendi disponibile la variabile al riavvio

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

Testato e funzionante su Windows 7/10

4
Pedro Sousa

Una possibile soluzione per i servizi è eseguirli temporaneamente come un altro utente (diverso da LocalSystem, LocalService, NetworkService). Ad esempio per il servizio Apache funziona senza problemi. Per modificare l'account del servizio, aprire la console di services.msc, selezionare servizio, fare clic su Proprietà servizio e nella seconda scheda immettere le credenziali di accesso per un utente. Riavvia il servizio e le sue variabili di ambiente dovrebbero essere aggiornate.

Se si tratta di un utente di cui è stato effettuato il log-in, questo dovrebbe funzionare senza problemi. Se si utilizza l'account utente corrente, potrebbe essere necessario riavviare Explorer.exe. Si noti inoltre che l'esecuzione di servizi come normale account utente potrebbe creare rischi per la sicurezza.

3
Odin

Poiché le persone non hanno ancora aggiunto questa risposta, volevo menzionare che è possibile impostare variabili di sistema permanenti che sopravvivono al riavvio con il comando SETX.

per esempio.

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

Si noti che quanto sopra non funzionerà nella finestra di comando corrente e richiederà di aprire una nuova finestra di comando prima che abbia effetto. Di conseguenza, a seconda del caso d'uso; potrebbe essere necessario combinare questo con una delle altre tecniche sopra.

Per ulteriori dettagli, consultare il seguente URL :

1
Doug