다음을 통해 공유


환경 변수

모든 프로세스에는 환경 변수 집합과 해당 값이 포함된 환경 블록이 있습니다. 환경 변수에는 사용자 환경 변수(각 사용자에 대해 설정됨) 및 시스템 환경 변수(모든 사용자에 대해 설정됨)의 두 가지 유형이 있습니다.

기본적으로 자식 프로세스는 부모 프로세스의 환경 변수를 상속합니다. 명령 프로세서에서 시작한 프로그램은 명령 프로세서의 환경 변수를 상속합니다. 자식 프로세스에 대해 다른 환경을 지정하려면 새 환경 블록을 만들고 포인터를 CreateProcess 함수에 매개 변수로 전달합니다.

명령 프로세서는 환경 블록을 표시하거나 새 환경 변수를 만드는 set 명령을 제공합니다. 제어판시스템을 선택하고 고급 시스템 설정을 선택하고 환경 변수를 클릭하여 환경 변수를 보거나 수정할 수도 있습니다.

각 환경 블록에는 다음 형식의 환경 변수가 포함됩니다.

Var1=Value1\0
Var2=Value2\0
Var3=Value3\0
...
VarN=ValueN\0\0

환경 변수의 이름에는 등호(=)를 포함할 수 없습니다.

GetEnvironmentStrings 함수는 호출 프로세스의 환경 블록에 대한 포인터를 반환합니다. 읽기 전용 블록으로 처리해야 합니다. 직접 수정하지 마세요. 대신 SetEnvironmentVariable 함수를 사용하여 환경 변수를 변경합니다. GetEnvironmentStrings에서 가져온 환경 블록을 마치면 FreeEnvironmentStrings 함수를 호출하여 블록을 해제합니다.

SetEnvironmentVariable을 호출해도 시스템 환경 변수에는 영향을 주지 않습니다. 프로그래밍 방식으로 시스템 환경 변수를 추가하거나 수정하려면 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 레지스트리 키에 추가한 다음 lParam이 문자열 "Environment"로 설정된 WM_SETTINGCHANGE 메시지를 브로드캐스트합니다. 이렇게 하면 셸과 같은 애플리케이션이 업데이트를 선택할 수 있습니다.

사용자 정의 환경 변수의 최대 크기는 32,767자입니다. 환경 블록의 크기에 대한 기술적 제한은 없습니다. 그러나 블록에 액세스하는 데 사용되는 메커니즘에 따라 실질적인 제한이 있습니다. 예를 들어 일괄 처리 파일은 최대 명령줄 길이보다 긴 변수를 설정할 수 없습니다.

Windows Server 2003 및 Windows XP: 프로세스에 대한 환경 블록의 최대 크기는 32,767자입니다. Windows Vista 및 Windows Server 2008부터 환경 블록의 크기에 대한 기술적 제한은 없습니다.

GetEnvironmentVariable 함수는 지정된 변수가 호출 프로세스의 환경에서 정의되는지 여부와 해당 값이 무엇인지를 결정합니다.

지정된 사용자에 대한 환경 블록의 복사본을 검색하려면 CreateEnvironmentBlock 함수를 사용합니다.

환경 변수 문자열을 확장하려면 ExpandEnvironmentStrings 함수를 사용합니다.

환경 변수 변경

사용자 환경 변수