반응형
환경변수값을 가져올 필요성이 있을 때가 있다.
비슷한 업무 종사자라면, %USERPROFILE%의 Path를 알아와야할 경우처럼...

시작 실행에서 %USERPROFILE%을 입력하면 사용자계정과 연결되어있는 폴더가 열린다.
문제는 Winxp와 vista,win7이 같은 %USERPROFILE%이란 환경변수는 가지고 있지만,
Path가 다르다는 것. 즉, Fix되어있지 않아서.... 문제라는 것이다.

GetEnvironmentVariable() 함수를 쓸건데 그 전에 서론을 짚고 넘어가자면,,

필자가 알기로는....

vista, win7 경우에는 %USERPROFILE%의 값이 보통
"C:\USERS\[사용자계정]" 뭐 이런식으로 알고있고,,
winxp 경우에는
"C:\Documents and Settings\[사용자계정]"

....과 같이 생성된다, 자신의 환경변수 %USERPROFILE%이 어떤 값이 가지고 있는지
설정된 모습을 보고싶으면 cmd 창에서 "set"을 입력하면 된다. (아래와 같이)


Set명령을 치니 화면을 넘어가서....
암튼 set명령을 치니 USERPROFILE = C:\Doc......와 같이 나온다.
필자의 컴퓨터는 Winxp니까 이렇게 나오는 것...

자 그럼 본론으로 들어가서... 저 사용자계정에 따라 변하게되는 저 변수의 값을
가져오는 함수를 예제를 통해서 보자.

TCHAR szDefaultPath[_MAX_PATH] = {0};
DWORD dwBufLen = MAX_PATH;

GetEnvironmentVariable("USERPROFILE", szDefaultPath, dwBufLen);

m_strAddFindDir = CString(szDefaultPath) + CString("/AppData/LocalLow/NPKI/");

GetEnvironmentVariable 함수를 쓰기위해 제공될 파라미터의 타입은 TCHAR와 DWORD가 있다.

마지막줄은 받아온 값을 CString()화 해서 필자가 사용하는 모습이다.

알아내는데 고생한 것치고, 간단해서 허탈할 정도다 -_-;; 차라리 Registry가 더 어렵지...

GetEnvironmentVariable 이거 달랑 하나로 끝나버렸다... ㅎㄷㄷ

레지스트리의 값을 불러오는 방법은 아래 글을 참고하길 바란다.

2011/08/26 - [I.T/Programming] - [C/C++] 레지스트리(Registry - regedit)의 값을 가져오기 - RegOpenKeyEx, RegQueryValueEx
반응형
Posted by Rainfly
l