Ortam değişkenleri kayıt defterinde nerede depolanır?


191

Bir ortam değişkenine uzaktan erişmem gerekiyor. Bunu yapmak için en iyi yolu kayıt defterinden okumak olduğunu düşünüyorum.

Ortam değişkenleri kayıt defterinde nerede depolanır?

Yanıtlar:


283

Server 2012 R2 ile XP'de depolandıkları yer:

Kullanıcı Değişkenleri

HKEY_CURRENT_USER\Environment

Sistem Değişkenleri

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

7
Değişikliklerinizi yürürlüğe koymak için sisteminizi yeniden başlatmayı unutmayın.
0x6B6F77616C74

22
Yeniden başlatmanız gerekmez. Sadece Explorer.exe'yi öldürün ve canlandırın. Bu, örneğin cmd.exe (Ana menüden başlatıldığında) için ana işlemdir
Cristian Diaconescu

2
IIS gibi diğer işlemlere ne dersiniz? Ben Explorer.exe olanlar için üst değil, bu yüzden yeniden başlatma gerekli olacağını tahmin ediyorum?
Colin

3
İşlem sırasında sistem env değişkenlerinde okunan işlemler. IIS gibi bir şeyle, bu hizmetin yeniden başlatılması güncellenmiş değerleri getirmelidir.
Steve Scheffler

11
Kullanıcı yolu değişkenleri (Belgelerim, AppData, vb.)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
mythofechelon

22

Bunun eski olduğunu anlıyorum, ancak Windows 7'de bunu yapmanın daha etkili bir yolu var. SETX varsayılan olarak yüklenir ve diğer sistemlere bağlanmayı destekler.

Kullanabileceğiniz bir uzak sistem genel ortam değişkenlerini değiştirmek için

setx /m /s HOSTNAME-GOES-HERE VariableNameGoesHere VariableValueGoesHere

Bu, kaşifin yeniden başlatılmasını gerektirmez.


9
Setx 1024 karakterden sonra her şeyi kısaltırken buna dikkat edin !!! superuser.com/questions/387619/…
WalyKu

5

cmd:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
reg query HKEY_CURRENT_USER\Environment

Güç kalkanı:

Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Get-Item HKCU:\Environment

Powershell / .NET: (bkz. Https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs.110).aspx )

[System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::Machine)
[System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::User)

3

Her zaman bununla ilgili sorunlar yaşadım, getx.bat yaptım:

::getx %envvar% [\m]
::reads envvar from user enviroment variable and stores it in getxvalue variable
::with \m read system enviroment

@SETLOCAL EnableDelayedExpansion
@echo OFF

@set l_regpath="HKEY_CURRENT_USER\Environment"
@if "\m"=="%2" set l_regpath="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

::REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH /t REG_SZ /f /d "%PATH%"
::@REG QUERY %l_regpath% /v %1 /S

@FOR /F "tokens=*" %%A IN ('REG QUERY %l_regpath% /v %1 /S') DO (
@  set l_a=%%A
@   if NOT "!l_a!"=="!l_a:    =!" set l_line=!l_a! 
)

::delimiter is four spaces change it to tab \t
@set l_line=!l_line!
@set l_line=%l_line:    =   %

@set getxvalue=

@FOR /F "tokens=3* delims=  " %%A IN ("%l_line%") DO (
@   set getxvalue=%%A
)
@set getxvalue=!getxvalue!
@echo %getxvalue% > getxfile.tmp.txt
@ENDLOCAL

::we already used tab as delimiter
@FOR /F "delims=    " %%A IN (getxfile.tmp.txt) DO (
    @set getxvalue=%%A
)
@del getxfile.tmp.txt

@echo ON
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.