[C/C++] 환경변수(%USERPROFILE%)의 값, Path을 읽어오기, Get %USERPROFILE% Path, GetEnvironmentVariable
I.T/Programming 2011. 8. 26. 17:38반응형
환경변수값을 가져올 필요성이 있을 때가 있다.
비슷한 업무 종사자라면, %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니까 이렇게 나오는 것...
자 그럼 본론으로 들어가서... 저 사용자계정에 따라 변하게되는 저 변수의 값을
가져오는 함수를 예제를 통해서 보자.
GetEnvironmentVariable 함수를 쓰기위해 제공될 파라미터의 타입은 TCHAR와 DWORD가 있다.
마지막줄은 받아온 값을 CString()화 해서 필자가 사용하는 모습이다.
알아내는데 고생한 것치고, 간단해서 허탈할 정도다 -_-;; 차라리 Registry가 더 어렵지...
GetEnvironmentVariable 이거 달랑 하나로 끝나버렸다... ㅎㄷㄷ
레지스트리의 값을 불러오는 방법은 아래 글을 참고하길 바란다.
2011/08/26 - [I.T/Programming] - [C/C++] 레지스트리(Registry - regedit)의 값을 가져오기 - RegOpenKeyEx, RegQueryValueEx
비슷한 업무 종사자라면, %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/");
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
반응형