PATH ortam değişkenim neden komut isteminden farklı?


11

Biraz önemli bir arka plan: Şirketim girişte kullanıcı PATH ortam değişkeninde değişiklikler yapan ve eşlenen DFS dosya paylaşımlarında bağımlılıkları olan yazılımı çalıştırmama izin veren genel bir giriş VBS betiğine sahiptir. Yakın zamanda Windows Powershell SDK'sını Windows 7 Enterprise makineme kurdum ve PATH ortam değişkenimi Powershell komut satırından değiştirmeyi denedim.

Bunu takiben, artık bu giriş PATH değişikliklerine karşılık gelen uygulamaları çalıştıramayacağımı ve ortam değişkeni editörü PATH'ın 'echo %PATH%'komut isteminden bir yayın verdiğimde gösterilenden farklı bir şeye ayarlandığını fark ettim .

Yani örneğin (basitleştirme), ortam değişkeni düzenleyicisinden ( My Computer properties -> Advanced System Settings -> Environment Variables)

 C:\MyDir\; C:\MyOtherDir

oysa ben 'echo %PATH%'bir komut isteminden yaptım:

 C:\MyDir\

Başkasının benzer bir sorunu vardı ve bir çeşit çözüm var mıydı? Yardım için Google'a gittiğimde, bunun üzerine geldim:

(İlgili?) StackOverflow Konu

Oturum açma komut dosyası Explorer.exe ortamımdan başka bir şey tarafından başlatıldıysa, sorun buydu. Ancak, giriş komut dosyasını kendim çalıştırdığımda, komut isteminden PATH'ım değişmedi. Bunun PowerShell ile ne ilgisi var? Bunun bu yüklemeye nasıl bağlandığını özlüyorum.


Powershell'deki yolu nasıl değiştirdiniz? % PATH% 'ı nerede yankıladınız? Cmd.exe içinde?
Werner Henze

AŞAĞIDAKİ CEVAP CİHAZDIR.
SDsolar

Yanıtlar:


11

Windows'un iki ortam değişkeni sınıfı sistem ortam değişkenleri ve kullanıcı ortam değişkenleri vardır . Eğer kullanıyorsanız kullanıcı ortam değişkeniniziecho %PATH% göreceksiniz . Yalnızca tanımlanmış bir kullanıcı değişkeni yoksa, sistem değişkeni kullanıcı işlemleri için geçerli olacaktır. PATH

PATHAyırıcı ;bir boş tarafından takip edilmemelidir.

Aşağıdaki Microsoft notu yardımcı olabilir:

Aşağıdaki Kayıt Defteri anahtarını düzenleyerek kullanıcı ortamı değişkenlerini değiştirebilirsiniz:

   HKEY_CURRENT_USER \ 
         Environment

Aşağıdaki Kayıt Defteri anahtarını düzenleyerek sistem ortamı değişkenlerini değiştirebilirsiniz:

   HKEY_LOCAL_MACHINE \ 
               SYSTEM \ 
    CurrentControlSet \ 
              Control \ 
      Session Manager \ 
          Environment

Genişletilmesi gereken ortam değişkenlerinin (örneğin, kullandığınızda %SYSTEM%) kayıt defterinde bir REG_EXPAND_SZkayıt defteri değeri olarak depolanması gerektiğini unutmayın . REG_SZKayıt defterinden okunduğunda hiçbir tür değeri genişletilmez.

Ek not: Bir işlem ortamını her değiştirdiğinde (yeni işlemler için ortamı tanımlayan kayıt defteri ayarları yerine), değişiklikler yalnızca alt işlemler için görülebilir.


1
Çevresel Değişkenleri değiştirmeniz gerekiyorsa, kayıt defterinde değişiklik yapmanız gerekiyorsa Axel'i vurgulamak istiyorum. Aslında bu konuda yardımcı olmak için bir PowerShell işlevi oluşturdum: computerperformance.co.uk/powershell/powershell_env_path.htm
Guy Thomas

1
Değiştirilecek değer yok, sadece iki değişken tmpve temp. Değiştirilmesi gereken kullanıcı yolu bu olduğundan emin misiniz?
Johnny_D

Bu işe yaramaz gibi görünüyor (en azından yeniden başlatmadan önce). Yol değişkeni HKCU \ Environment içinde değil, cmd.exe içindeki yol değişkeni doğru bir şekilde gösteriliyor, ancak başlatılan uygulamalar hala eski yol değişkenini görüyor.
Martin Argerami

@Martin: evet, başlatılan uygulama kayıt defteri değişikliklerini tanımıyor, çünkü uygulama başlatma sırasında ortamın bellek kopyasını alıyorlar. Bu kopya, alt işlemleri başlatan üst sürece bağlıdır. Örneğin Windows Gezgini'nden başlatılırsa, yeni YOLU almak için Gezgin'i yeniden başlatmanız gerekir.
Axel Kemper

Kafasına çiviledin! Oradaki Yol, kaldırıldığını bildiğim, Microsoft SQL gibi bazı programlar ekliyordu. Ayarladığım sistem özellikleri yolundan gelmediğini biliyordum. Çok teşekkür ederim - gelecekten - bu cevabı 3 yıldan fazla bir süre önce gönderdiniz.
SDsolar
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.