기존 XP에서는 SHGetFolderPath 함수를 이용하면 가능했지만 Vista에서는 SHGetKnownFolderPath 함수를 사용해야 한다. 아직 Compatibility를 위해서 기존 함수도 지원한다고 하지만 Recommand가 아니니 바꿔야 잠재된 문제를 앱앨 수 있겠죠.소스 1.
… if (_isVista) { WCHAR *pSavePath = NULL; HMODULE shell32module = GetModuleHandle("shell32.dll"); // Defined in the platform SDK for Vista const DWORD KF_FLAG_CREATE = 0x00008000; const GUID FOLDERID_LocalAppData ={0xF1B32785, 0x6FBA, 0x4FCF, {0x9D, 0x55, 0x7B, 0x8E, 0x7F, 0x15, 0x70, 0x91}}; SHGetKnownFolderPathProc SHGKFPfunction = reinterpret_cast<SHGetKnownFolderPathProc>( GetProcAddress(shell32module, "SHGetKnownFolderPath")); HRESULT hr = SHGKFPfunction(FOLDERID_LocalAppData, KF_FLAG_CREATE, NULL, &pSavePath); }[/CODE] 소스 2. [CODE]#include <strsafe.h> typedef UINT (CALLBACK* LPFNDLLFUNC)(GUID& rfid,DWORD dwFlags,HANDLE hToken,PWSTR* ppszPath); TCHAR pathBuf[MAX_PATH] = _T(""); HRESULT hr; size_t len; PWSTR