환경 변수는 레지스트리에 어디에 저장됩니까?


191

환경 변수에 원격으로 액세스해야합니다. 이렇게하려면 가장 좋은 방법은 레지스트리에서 읽는 것입니다.

환경 변수는 레지스트리에 어디에 저장됩니까?

답변:


283

Server 2012 R2를 통해 XP에 저장되는 위치는 다음과 같습니다.

사용자 변수

HKEY_CURRENT_USER\Environment

시스템 변수

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

7
변경 사항을 적용하려면 시스템을 다시 시작해야합니다.
0x6B6F77616C74

22
다시 시작할 필요는 없습니다. Explorer.exe를 종료하고 다시 활성화하십시오. 예를 들어 cmd.exe의 상위 프로세스입니다 (시작 메뉴에서 시작한 경우)
Cristian Diaconescu

2
IIS와 같은 다른 프로세스는 어떻습니까? Explorer.exe가 부모가 아니라고 생각하므로 다시 시작해야합니까?
콜린

3
프로세스는 시작할 때 시스템 환경 변수에서 읽습니다. 따라서 IIS와 같은 경우 해당 서비스를 다시 시작하면 업데이트 된 값을 가져와야합니다.
Steve Scheffler

11
사용자 경로 변수 (내 문서, AppData 등)는HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
mythofechelon

22

나는 이것이 오래되었다는 것을 알고 있지만 Windows 7에서는이 작업을보다 효율적으로 수행 할 수 있습니다. SETX는 기본적으로 설치되며 다른 시스템에 대한 연결을 지원합니다.

원격 시스템 전역 환경 변수를 수정하려면

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

탐색기를 다시 시작할 필요는 없습니다.


9
setx는 1024 개의 문자 생성기 이후 모든 것을 자르므로주의하십시오! superuser.com/questions/387619/…
WalyKu

5

cmd :

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

파워 쉘 :

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

Powershell / .NET : ( 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

나는 항상 그것에 문제가 있었고 getx.bat를 만들었습니다.

::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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.