본문 바로가기

프로그래밍/C++

C++ 시스템 환경변수 읽어오기



시스템 환경변수를 코드상으로 불러들이는 방법은 몇가지가 있다.


그중 하나는 C라이브러리 함수 getenv() 를 사용하면 된다.


필요헤더:  stdlib.h

형태: char *getenv(const char *name);


사용방법은 다음과 같다.


매우 simple

#include <stdio.h>

#include <stdlib.h>


int main()

{

   printf( "TEMP1 = %sn", getenv( "TEMP1"));

}


다음은 WINAPI함수 - GetEnvironmentVariable() 를 이용하면 된다.


DWORD WINAPI GetEnvironmentVariable(

  _In_opt_  LPCTSTR lpName,

  _Out_opt_ LPTSTR  lpBuffer,

  _In_      DWORD   nSize

);


lpName [in, optional] 환경변수이름


lpBuffer [out, optional]디렉토리를 담아올 버퍼


nSize [in] 널포인터를 포함한 버퍼의 크기


리턴값: 얻어온 디렉토리의 길이


https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms683188(v=vs.85).aspx


TCHAR _buffer[256] = { 0, };


DWORD res = GetEnvironmentVariable(

"TEMP",

_buffer,

256

);


환경변수를 못찾거나, 버퍼의 크기가 너무 작다면 에러가 난다 => 리턴값 0


에러를 좀 더 자세히 확인하고 싶다면, GetLastError() 를 호출하면 된다.


만약 찾기에 실패했다면 리턴값 203을 뱉어낼 것이다.


GetLastError() 참조 - http://honestgame.tistory.com/120




그외에 환경변수 설정하기


 ::SetEnvironmentVariable("TEMP", "C:\\tmp");


 

환경변수 지우기


::SetEnvironmentVariable("TEMP", NULL);


환경변수를 등록하고 종종 인식이 안되는 경우도 있는데, 


그럴때는 재부팅을 하면 된다.


끝.