Vraag Hoe voeg je een Windows-omgevingsvariabele toe zonder opnieuw op te starten?


Dit is waarschijnlijk een eenvoudig antwoord, maar ik heb het nooit kunnen vinden door te googlen. Ik zou eenvoudigweg een omgevingsvariabele willen toevoegen aan een Windows-machine (desktop of server) en deze kunnen gebruiken zonder die machine opnieuw op te starten.

Stel dat u een productieserver heeft waarop verschillende apps worden gehost en dat een nieuwe app een bepaalde omgevingsvariabele moet uitvoeren. U wilt het niet opnieuw opstarten terwijl gebruikers zijn verbonden met uw andere apps. Welke keuzes heb je? Ik hou niet van de wait-to-a-good-time-to-reboot-optie. Er moet een betere manier zijn. Wat mis ik?


162
2018-05-16 04:09


oorsprong


Ik had dezelfde kwestie. Ik heb ergens gelezen dat het proces explorer.exe vermoorden de variabelen zou bijwerken en het werkte. Toen moest ik explorer van de task manager uitvoeren. - user19694
U moet de opdrachtprompt sluiten en opnieuw openen om uw padvariabelen bij te werken. De variabelen worden geladen wanneer cmd start. - NiLInfinite


antwoorden:


Wijzigingen in omgevingsvariabelen moeten onmiddellijk van kracht worden, als u de wijziging aanbrengt via het hoofdvenster van Eigenschappen voor de betreffende computer (ga naar Mijn computer | Eigenschappen | Geavanceerd | Omgevingsvariabelen). Nadat de wijzigingen zijn opgeslagen, verzendt Explorer een WM_SETTINGCHANGE bericht naar alle vensters om hen op de hoogte te stellen van de wijziging. Alle programma's die via Explorer worden voortgebracht, moeten de bijgewerkte omgeving krijgen, hoewel reeds draaiende programma's dat niet doen, tenzij ze het bericht voor het wijzigen van instellingen verwerken.

Ik kan aan de hand van uw probleembeschrijving niet zien welk specifiek probleem u hiermee hebt. Kun je ons meer vertellen over het specifieke scenario dat niet werkt?

Dit KB-artikel kan ook nuttig zijn: Hoe omgevingsvariabelen naar het systeem te verspreiden


153
2018-05-16 04:16



Ok, ik denk dat ik dit gedrag heb moeten zien aan een loopservice of zoiets. Ik heb een nieuwe omgevingsvariabele toegevoegd met behulp van de hierboven beschreven methode. Toen was ik in staat om de waarde te zien na het openen van een nieuwe opdrachtprompt en het gebruik van het commando "echo% <myvar>%. Bedankt voor uw antwoorden. - Chad Braun-Duin
Voor PowerShell-gebruikers kan dit fragment van nut zijn: poshcode.org/2049 - Anders Zommarin
Als u cmd gebruikt, moet u deze opnieuw starten als u de env-variabele wijzigt - Neil McGuigan
Net Scala op mijn pc geïnstalleerd maar de PATH is niet bijgewerkt; vermoedelijk heeft de MSI het bericht WM_SETTINGCHANGE niet uitgezonden. Ik heb een dummy SYSTEM-variabele toegevoegd, d.w.z. CHANGE_TO_UPDATE = z, die ik update om het WM_SETTINGCHANGE-bericht te activeren - probleem opgelost - Darren Bishop
Bedankt voor de CHANGE_TO_UPDATE = z, dat is precies de oplossing die ik wilde. Het werkte voor mij en ik hoefde niet opnieuw op te starten. - iopq


  1. Typ in een opdrachtprompt: runas /user:yourusername@yourdomain cmd
  2. Er wordt een nieuwe cmd-prompt geopend en typ vervolgens: taskkill /f /im explorer.exe
  3. Typ vervolgens: explorer.exe

Nu na het sluiten van alle opdrachtprompts, zult u zien dat de PATH variabele is echt bijgewerkt.

Alle opdrachtprompts moeten worden gesloten. Open een nieuwe opdrachtprompt opnieuw, typ het pad en u ziet de nieuwe gegevens.


54
2018-03-20 06:36



Van alle antwoorden op deze pagina is dit de enige die echt voor mij heeft gewerkt. Dank je!! - CoreDumpError
1 ....................... - Ijas Ameenudeen
Dit werkte voor mij. Ik denk het probleem is dat als u cmd door ontdekkingsreiziger loopt (om u te bewaren die in lange wegen moet typen) dan ontdekkingsreiziger nooit gesloten is, zelfs als u alle ontdekkingsreizervensters sluit. Bedankt voor de oplossing :) - Steve Mc
Werkte voor mij. U kunt Taakbeheer ook gebruiken om de verkennerstaken te doden en opnieuw te starten (Bestand> Nieuwe taak uitvoeren). - adabyron
Uhh. Vermoord alsjeblieft de verkenner van Windows niet tenzij een van zijn processen is opgehangen. Open in plaats daarvan het dialoogvenster voor afsluiten van vensters en annuleer het terwijl u ingedrukt houdt ctrl+alt+shift. Dat zal Windows verkenner netjes afsluiten. In Vista + is het dialoogvenster voor afsluiten van vensters moeilijker te vinden (maar nog steeds aanwezig, ten minste tot en met 7 (onzeker over 8 en 10)), dus er is een tweede methode. ctrl + shift + klik met de rechtermuisknop in een leeg gedeelte van het startmenu en kies exit explorer. In 8 is de exit-optie hetzelfde, maar u gebruikt de taakbalk niet het startmenu. - Kevin Cathcart


Eén ding om in gedachten te houden is dat veel programma's de omgevingsvariabelen verkrijgen wanneer ze voor het eerst worden opgestart, dus hoewel Windows mogelijk geen herstart nodig heeft, kunnen sommige programma's mogelijk zijn voordat ze de nieuwe variabelen kunnen gebruiken. Een goed voorbeeld hiervan is het openen van een nieuw opdrachtpromptvenster na het toevoegen van een PATH (ja, ik ben hierdoor in de war).


16
2018-05-16 06:11



Deze problemen zijn van invloed op ALLE DIENSTEN, zelfs een opnieuw gestarte service zal geen nieuwe omgevingsvariabelen zien. - gimel
Weet je zeker dat het niet komt door het delen van een svchost-proces? - Mark Sowul


Hoewel ik niet genoeg naamsbekendheid heb om commentaar te leveren op het best gestemde antwoord op deze vraag, zou ik willen zeggen dat dit niet helemaal juist is. Ik weet dit omdat ongeacht welke oplossing ik in dit bericht heb geprobeerd, niets werkelijk werkte.

De kb-artikel gekoppeld aan in dat antwoord stelt eigenlijk dat:

Merk echter op dat wijzigingen in de omgevingsvariabelen dat niet doen   resulteren in onmiddellijke verandering. Bijvoorbeeld als u een ander commando start   Vragen na het maken van de wijzigingen, de omgevingsvariabelen zal   weerspiegelen de vorige (niet de huidige) waarden. De veranderingen duren niet   effect totdat u zich afmeldt en vervolgens weer inlogt.

Het deel over de omgevingsvariabelen die terugkeren naar de vorige waarden na het opnieuw laden van de opdrachtprompt, is precies wat ik heb ervaren in Windows Server 2008.

Het artikel gaat verder met te zeggen:

Om deze wijzigingen door te voeren zonder zich af te melden, zendt u een WM_SETTINGCHANGE-bericht uit naar alle vensters in het systeem, zodat geïnteresseerde applicaties (zoals Windows Explorer, Program Manager, Taakbeheer, Configuratiescherm, enzovoort) een update kunnen uitvoeren.

Dat betekent niet dat Explorer een WM_SETTINGCHANGE-bericht uitzendt nadat u de systeemomgevingsvariabelen hebt gewijzigd of dat het echt werkt. Ik weet niet zeker hoe u zou doen wat wordt voorgesteld in het KB-artikel (om de wijzigingen direct door te geven) vanaf de opdrachtprompt.


12
2017-11-26 22:30





Maak de env. variabele beschikbaar meteen:

1. Open a shell

Afhankelijk van de omgevingsvariabele die u wilt wijzigen, doet u het volgende:    (voorkom dat je een nieuw PATH wilt toevoegen voor een recent geïnstalleerde applicatie) Typ het volgende achter de shellprompt:

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

controleer of je nieuwe pad is toegevoegd aan de omgevingsvariabele

3. echo %PATH%

Gedaan.

Maak de variabele beschikbaar bij opnieuw opstarten

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

Getest en werkend op Windows 7/10


4
2017-11-18 17:00





Een mogelijke oplossing voor services is om ze tijdelijk als een andere gebruiker uit te voeren (anders dan LocalSystem, LocalService, NetworkService). Voor bijvoorbeeld de Apache-service werkt dit zonder problemen. Als u de console open services.msc van de serviceaccount wilt wijzigen, selecteert u service, klikt u op service-eigenschappen en voert u op het tweede tabblad aanmeldreferenties in voor een gebruiker. Start de service opnieuw op en de omgevingsvariabelen moeten up-to-date zijn.

Als dit een gebruiker is die is ingelogd, zou dit probleemloos moeten werken. Als u de huidige gebruikersaccount gebruikt, is het mogelijk ook nodig om explorer.exe opnieuw te starten. Houd er ook rekening mee dat het uitvoeren van services als een normaal gebruikersaccount beveiligingsrisico's kan veroorzaken.


3
2017-08-09 20:26