Yeniden başlatmadan bir Windows ortam değişkenini nasıl eklersiniz?


181

Bir Windows makinesine (masaüstü veya sunucu) bir Ortam değişkeni eklemek ve makineyi yeniden başlatmadan kullanabilmek istiyorum.

Diyelim ki çeşitli uygulamaları barındıran bir üretim sunucunuz var ve yeni bir uygulamanın çalışması için belirli bir Ortam değişkenine ihtiyacı var. Kullanıcılar diğer uygulamalarınıza bağlıyken yeniden başlatmak istemezsiniz. Hangi seçeneklerin var? Yeniden başlatmak için iyi bir zamana kadar bekle seçeneğini beğenmedim. Daha iyi bir yol olmalı. Neyi kaçırıyorum?


2
Ben de aynı sorunu yaşadım. Bir yerde explorer.exe işlemini öldürmenin değişkenleri güncelleyeceğini ve çalıştığını okudum. Sonra görev yöneticisinden kaşif çalıştırmak zorunda kaldım.
user19694

1
Komut istemini kapatmanız ve yol değişkenlerinizin güncellenmesi için yeniden açmanız gerekir. Değişkenler cmd başladığında yüklenir.
NiLInfinite

Yanıtlar:


162

Söz konusu bilgisayarın ana Özellikler iletişim kutusunu kullanarak değişiklik yaparsanız, ortam değişkenlerinde yapılan değişiklikler derhal yürürlüğe girmelidir (Bilgisayarım | Özellikler | Gelişmiş | Çevre Değişkenleri bölümüne gidin). Değişiklikler kaydedildikten sonra, Explorer WM_SETTINGCHANGEtüm pencerelere değişikliği bildirmek için bir mesaj yayınlar . Bundan sonra Explorer aracılığıyla oluşturulan herhangi bir program, güncellenmiş ortamı elde etmelidir, ancak halihazırda çalışan programlar ayar değişikliği mesajını işleme koymazlarsa, almazlar.

Bununla ilgili ne gibi bir sorun yaşadığınızı sorun tanımınızdan söyleyemem. Çalışmayan belirli senaryo hakkında bize biraz daha bilgi verebilir misiniz?

Bu KB makalesinde de şunlar kullanılabilir: Ortam değişkenleri sisteme nasıl yayılır


2
Tamam, sanırım bu davranışı çalışan bir hizmette görmüş olmalıyım. Yukarıda açıklanan yöntemi kullanarak yeni bir ortam değişkeni ekledim. Sonra, yeni bir komut istemi açtıktan ve "echo% <myvar>%" komutunu kullandıktan sonra değeri görebildim. Cevaplarınız için ikinize de teşekkür ederim.
Chad Braun-Duin

5
PowerShell kullanıcıları için bu snippet yardımcı olabilir: poshcode.org/2049
Anders Zommarin

8
Cmd kullanıyorsanız, env değişkenini değiştirirseniz yeniden başlatmanız gerekir
Neil McGuigan

4
Bilgisayarıma yeni Scala yüklendi ancak PATH güncelleme yapmadı; Muhtemelen MSI, WM_SETTINGCHANGE mesajını yayınlamamıştır. Kukla bir SYSTEM değişkenini ekledim, yani WM_SETTINGCHANGE mesajını tetiklemek için güncellediğim CHANGE_TO_UPDATE = z = sorun çözüldü
Darren Bishop

3
Bağlantı için 404 :-(
Samoth

63
  1. Komut isteminde şunu yazın: runas /user:yourusername@yourdomain cmd
  2. Yeni bir cmd istemi açıp aşağıdakileri yazın: taskkill /f /im explorer.exe
  3. Sonra şunu yazın: explorer.exe

Şimdi tüm komut istemlerini kapattıktan sonra, PATHdeğişkenin gerçekten güncellendiğini göreceksiniz .

Tüm komut istemleri kapatılmalıdır. Yeni bir komut istemi açın, yol yazın ve yeni verileri göreceksiniz.


6
Bu sayfadaki tüm cevapların dışında, aslında benim için çalışan tek cevap bu. Teşekkür ederim!!
coredumperror,

2
Bu benim için çalıştı. Sanırım sorun şu ki, eğer explorer üzerinden cmd çalıştırırsanız (uzun yollarda yazmak zorunda kalmanız için), tüm explorer pencerelerini kapatsanız bile, explorer asla kapanmaz. Çözüm için teşekkürler :)
Steve Mc

Benim için çalıştı. Ayrıca, Explorer görevlerini öldürmek ve yeniden başlatmak için Görev Yöneticisi'ni de kullanabilirsiniz (Dosya> Yeni görev çalıştır).
adabyron

7
Ahh. Lütfen işlemlerinden biri kapatılmadığı sürece Windows Explorer'ı öldürmeyin. Bunun yerine, kapatma pencereleri iletişim kutusunu açın ve basılı tutarken iptal edin ctrl+alt+shift. Bu temiz bir şekilde Windows Gezgini'nden çıkacaktır. Vista + 'da kapatma pencereleri iletişim kutusunun bulunması daha zordur (ancak hala en azından 7'den (yaklaşık 8 ve 10'dan emin değil)), bu nedenle ikinci bir yöntem vardır. ctrl + shift + başlat menüsünün boş bir bölümüne sağ tıklayın ve exit explorer'ı seçin. 8'de çıkış seçeneği aynıdır, ancak başlangıç ​​menüsünü değil görev çubuğunu kullanırsınız.
Kevin Cathcart

1
+1 Bu, Windows 7'de bir cazibe görevi görüyor. Bilginize, sadece CTRL + ALT + SHIFT tuşlarını kullandım ve Windows Görev Yöneticisi'nden tüm explorer.exe işlemlerini öldürdüm ve ardından Yeni Görev düğmesine basarak tekrar başlattım .
Marco Demaio,

19

Akılda tutulması gereken bir şey, birçok programın ilk başlatıldığında çevre değişkenlerini elde etmesidir, bu nedenle pencereler yeniden başlatmaya ihtiyaç duymayabilirken, bazı programlar yeni değişkenleri kullanmadan önce alabilir. Buna iyi bir örnek, bir PATH ekledikten sonra yeni bir komut istemi penceresi açmak zorunda kalmasıdır (evet, bunun için tetiklendim).


3
Bu problemler TÜM HİZMETLERİ etkiler, yeniden başlatılmış bir servis bile yeni ortam değişkenleri görmez.
gimel,

1
Bir svchost işleminin paylaşılması nedeniyle olmadığından emin misiniz?
Mark Sowul

16

Bu sorunun en yüksek oyu alan cevabı hakkında yorum yapacak kadar itibarımız olmasa da, bunun tam olarak doğru olmadığını belirtmek isterim. Bunu biliyorum çünkü bu yazıda hangi geçici çözümü denediğim önemli değil.

Bu cevaba bağlı kb makalesi aslında şunu belirtir:

Ancak, ortam değişkenlerinde yapılan değişikliklerin derhal değişmeyeceğini unutmayın. Örneğin, değişiklikleri yaptıktan sonra başka bir Komut İstemi başlatırsanız, ortam değişkenleri önceki (geçerli değil) değerleri yansıtır. Değişiklikler siz oturumu kapatıp tekrar açana kadar etkili olmaz.

Komut istemini yeniden yükledikten sonra ortam değişkenlerine önceki değerlere sıfırlama kısmı tam olarak Windows Server 2008'de yaşadıklarım.

Makale şöyle devam ediyor:

Bu değişiklikleri kapatmak zorunda kalmaksızın, sistemdeki tüm pencerelere bir WM_SETTINGCHANGE mesajı yayınlayın, böylece ilgilenen tüm uygulamaların (Windows Gezgini, Program Yöneticisi, Görev Yöneticisi, Denetim Masası vb.) Bir güncelleme yapmasını sağlayın.

Bu, sistem ortam değişkenlerini değiştirdikten sonra Explorer'ın bir WM_SETTINGCHANGE mesajı yayınladığı veya gerçekten çalıştığı anlamına gelmez. Komut isteminden KB makalesinde (değişiklikleri hemen yaymak için) önerilenleri nasıl yapacağınızdan emin değilim.


1
Bu benim için doğru olan tek cevap. Explorer'ı zor yoldan ya da "uygun" yolla öldürmek de dahil olmak üzere, hiçbiri farketmez.
Hashim,

4

Env yapın. değişken hemen kullanılabilir:

1. Open a shell

Değiştirmek istediğiniz ortam değişkenine bağlı olarak aşağıdakileri yapın: (yeni kurulan bir uygulama için yeni bir PATH eklemek istediğinizi varsayalım) Dolayısıyla, kabuk isteminde aşağıdakini yazın:

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

yeni yolunuzun çevre değişkenine eklendiğini kontrol edin

3. echo %PATH%

Bitti.

Değişkeni yeniden başlatırken kullanılabilir yap

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'da test edildi ve çalışıyor


3

Servisler için olası bir çözüm, bunları geçici olarak başka bir kullanıcı olarak çalıştırmaktır (LocalSystem, LocalService, NetworkService hariç). Örneğin Apache servisi için bu sorunsuz çalışır. Servis hesabını açmak için services.msc konsolunu açın, servisi seçin, servis özelliklerini tıklayın ve ikinci sekmede bir kullanıcı için oturum açma kimlik bilgilerini girin. Hizmeti yeniden başlatın ve ortam değişkenleri güncel olmalıdır.

Eğer bu kullanıcı giriş yapmış ise bundan daha fazla problemsiz çalışmalıdır. Mevcut kullanıcı hesabını kullanıyorsanız, explorer.exe programını yeniden başlatmak da gerekli olabilir. Ayrıca, normal kullanıcı hesabı olarak çalışan servislerin güvenlik riskleri oluşturabileceğini de unutmayın.


1

İnsanlar henüz bu cevabı eklememiş olduğundan, SETX komutuyla yeniden başlatmaya devam eden kalıcı sistem değişkenlerini ayarlayabileceğinizi belirtmek istedim.

Örneğin

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

Lütfen yukarıdaki komutun geçerli komut penceresinde çalışmayacağını ve etkinleşmeden önce yeni bir komut penceresi açmanızı gerektireceğini unutmayın. Sonuç olarak, kullanım durumuna bağlı olarak; Bunu yukarıdaki diğer tekniklerden biriyle birleştirmeniz gerekebilir.

Ek ayrıntılar için lütfen aşağıdaki URL’ye bakın :


çalışmıyor: / "geçersiz sözdizimi"
Joe DF

1
Şimdi dene. Görünüşe göre çift tırnak gerekiyordu.
Doug,

Teşekkürler, evet düşündüm .... bir kesme uyarısı almam dışında, buna ekleyemem ... :(
Joe DF
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.