보통 %SYSTEMROOT% 또는 %USERPROFILE% 등은 레지스트리에 쓰이는 특정 경로에 대한 숏컷이다.
c:\Windows 의 경로가 %SYSTEMROOT%이고 %USERPROFILE% 은 운영체제버젼마다 살짝씩 다르다.
실제로 명령창이나 탐색창에서 풀 네임대신 숏컷을 쓰면 잘 된다.
그래서 난 당연히 코딩상에서도 쓰면 되는줄 알았다.
그런데 NT계열에선 이 환경변수가 자동으로 지정되있지 않다고한다.
(정확히 NT계열이기 때문에 그런건진 잘 모르겠다.)
하지만 이런 경로들이 꼭 필요할 때가 있다.
철수랑 민수랑 USERPROFILE의 경로가 다르다고 두 사람을 위해서 서로다른 경로를 지정하는 프로그램을
만들 수는 없지않은가?
그래서 찾아보니 이런 환경변수를 얻어로는 API 함수가 있었다.
lpName [in, optional] lpBuffer [out, optional] nSize [in] 환경변수의 확인은 명령창에서 set 을 입력하면 나오는데, 그 값들을 얻어올 수 있단다.
const unsigned int size=50;
TCHAR buf[size];
GetEnvironmentVariable("USERPROFILE", buf,size);
이렇게 사용하면, 버퍼 변수에 USERPROFILE의 전체경로가 들어오게된다.
찾아보니 이것 말고도 환경변수에 관한 API함수가 꽤 있었다.
레지스트리 다룰때 유용할듯 싶다.
c:\Windows 의 경로가 %SYSTEMROOT%이고 %USERPROFILE% 은 운영체제버젼마다 살짝씩 다르다.
실제로 명령창이나 탐색창에서 풀 네임대신 숏컷을 쓰면 잘 된다.
그래서 난 당연히 코딩상에서도 쓰면 되는줄 알았다.
그런데 NT계열에선 이 환경변수가 자동으로 지정되있지 않다고한다.
(정확히 NT계열이기 때문에 그런건진 잘 모르겠다.)
하지만 이런 경로들이 꼭 필요할 때가 있다.
철수랑 민수랑 USERPROFILE의 경로가 다르다고 두 사람을 위해서 서로다른 경로를 지정하는 프로그램을
만들 수는 없지않은가?
그래서 찾아보니 이런 환경변수를 얻어로는 API 함수가 있었다.
DWORD WINAPI GetEnvironmentVariable(
__in_opt LPCTSTR lpName,
__out_opt LPTSTR lpBuffer,
__in DWORD nSize
); //from msdn.com
The name of the environment variable.
환경변수의 이름
A pointer to a buffer that receives the contents of the specified environment variable as a null-terminated string. An environment variable has a maximum size limit of 32,767 characters, including the null-terminating character.
널 종료 문자열인 환경변수의 명세(자세한 값)를 담아둘 버퍼의 포인터. 환경변수는 최고사이즈로 널 종료 문자를 포함한 32,767개의 문자까지 가능하다.
The size of the buffer pointed to by the lpBuffer parameter, including the null-terminating character, in characters.
널종료문자를 포함한 파라미터 lpbuffer 가 가리키는 버퍼의 크기.
const unsigned int size=50;
TCHAR buf[size];
GetEnvironmentVariable("USERPROFILE", buf,size);
이렇게 사용하면, 버퍼 변수에 USERPROFILE의 전체경로가 들어오게된다.
찾아보니 이것 말고도 환경변수에 관한 API함수가 꽤 있었다.
레지스트리 다룰때 유용할듯 싶다.
'Coding Note' 카테고리의 다른 글
[OpenCL] AMD OpenCL configurate the interface at visual studio 2008 (0) | 2011.12.02 |
---|---|
[OpenCL] About (0) | 2011.11.22 |
[Network] Delivery & Forwarding (1) | 2011.11.05 |
[Network] Special Address (0) | 2011.11.05 |
[Network] Supernetting & Classless addressing (0) | 2011.10.26 |