Come si aggiunge una variabile di ambiente di Windows senza riavvio?

Questa è probabilmente una risposta facile, ma non sono mai stata in grado di trovarla da googling. Vorrei semplicemente aggiungere una variabile Ambiente a una macchina Windows (desktop o server) e poterlo usare senza riavviare quella macchina.

Supponi che disponga di un server di produzione che ospita una serie di applicazioni e che una nuova applicazione abbia bisogno di una variabile di ambiente particolare da eseguire. Non si desidera riavviarlo mentre gli utenti sono connessi alle altre applicazioni. Quali scelte hai? Non mi piace l'opzione wait-until-a-good-time-to-reboot. Dev'essere un modo migliore. Che cosa mi manca?

  • i2b2 VM: Copy VM non mi dà un indirizzo IP valido
  • in modo negativo cancellato file memory.dmp
  • Utilizzare winexe per avviare un process Windows
  • Come possiamo amministrare in remoto la nostra "flotta" dei porttili Windows 7?
  • Il server SMTP forza il traffico in output
  • Windows 32 bit e 64 bit e GPT
  • Rimuovere 4 KBs estratti da tutta la networking in modo rapido
  • Documentazione sui codici di errore Hex di Windows
  • 6 Solutions collect form web for “Come si aggiunge una variabile di ambiente di Windows senza riavvio?”

    Le modifiche alle variables di ambiente dovrebbero avere effetto immediatamente se si effettua la modifica tramite la window di dialogo Proprietà principale per il computer in questione (vai a Proprietà | Proprietà | Avanzate | Variabili dell'ambiente). Dopo che le modifiche vengono salvate, Explorer trasmette un messaggio WM_SETTINGCHANGE a tutte le windows per informarne la modifica. Tutti i programmi generati tramite Esploratore dopo questo dovrebbero avere l'ambiente aggiornato, anche se i programmi già in esecuzione non lo faranno, a less che non gestiscano il messaggio di modifica delle impostazioni.

    Non riesco a raccontare dalla tua descrizione del problema quale problema specifico stai con questo. Puoi dirci di più sullo scenario specifico che non funziona?

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

    1. In un prompt dei comandi: runas /user:yourusername@yourdomain 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. Riaprire un nuovo prompt dei comandi, digitare il path e vednetworking i nuovi dati.

    Una cosa da tenere in mente è che molti programmi ottengono le variables ambientali quando vengono avviate per la prima volta, per cui le windows potrebbero non essere necessarie per riavviare, alcuni programmi potrebbero prima che possano utilizzare le nuove variables. Buon esempio di questo è wherer aprire una nuova window di prompt dei comandi dopo l'aggiunta di un PATH (sì, sono stato ingannato da questo).

    Mentre non ho abbastanza di una reputazione per commentare la risposta più alta votata a questa domanda, vorrei affermare che non è esattamente esatto. Lo so perché non import quale soluzione di lavoro che ho provato in questo post, niente ha funzionato.

    L' articolo di ca collegato a questa risposta afferma che:

    Tuttavia, si noti che le modifiche alle variables di ambiente non determinano una modifica immediata. Ad esempio, se si avvia un altro prompt dei comandi dopo le modifiche, le variables di ambiente riflettono i valori precedenti (non quelli attuali). Le modifiche non hanno effetto finché non si disconnette e quindi riaccenderanno.

    La parte delle variables di ambiente che ripristinano i valori precedenti dopo aver ricaricato il prompt dei comandi è esattamente quello che ho sperimentato in Windows Server 2008.

    L'articolo continua a dire:

    Per eseguire queste modifiche senza wherer disconnettersi, submit un messaggio WM_SETTINGCHANGE a tutte le windows del sistema in modo che qualsiasi applicazione interessata (ad esempio Esplora risorse, Program Manager, Task Manager, Pannello di controllo e così via) sia in grado di eseguire un aggiornamento.

    Ciò non implica che Explorer esegua un messaggio WM_SETTINGCHANGE una volta che hai modificato le variables dell'ambiente di sistema o che effettivamente funziona. Non sono sicuro di come farei quello che è suggerito nell'articolo KB (per propagare immediatamente le modifiche) dal prompt dei comandi.

    Rendere l'env. variabile disponibile subito:

     1. Open a shell 

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

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

    verificare che il nuovo path sia stato aggiunto alla variabile di ambiente

     3. echo %PATH% 

    Fatto.

    Rendere 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

    Una ansible soluzione per i servizi è quella di eseguirli temporaneamente come un altro utente (ad exception di LocalSystem, LocalService, NetworkService). Ad esempio per il servizio Apache questo funziona senza alcun problema. Per modificare l'account di servizio, aprire servizi console di services.msc, select servizio, fare clic su properties; del servizio e nella seconda scheda immettere credenziali di accesso per un utente. Riavviare il servizio e le sue variables di ambiente devono essere aggiornate.

    Se si tratta di un utente che è stato registrato di questo dovrebbe funzionare senza problemi. Se si utilizza l'account utente corrente, potrebbe essere necessario riavviare explorer.exe. Notare inoltre che i servizi di esecuzione come account utente normale possono generare rischi di sicurezza.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.