今天写一个程序,需要获得C:\Documents and Settings\<UserName>\Application Data这个目录的文件名. 百度了一下,发现了SHGetFolderPath的函数,示例代码: #include <iostream> #include <shlobj.h> using namespace std; int main(int argc, char* argv[]) { char szPath[MAX_PATH]; if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath))) { cout << szPath << endl; } return 0; } 注意代码应链结shell32库,命令行的话用/linkshell32.lib 又查了下MSDN,原型为 HRESULT SHGetFolderPath( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath ); 其中hToken可取以下值: CSIDL_ADMINTOOLS CSIDL_COMMON_ADMINTOOLS CSIDL_APPDATA CSIDL_COMMON_APPDATA CSIDL_COMMON_DOCUMENTS CSIDL_COOKIES CSIDL_FLAG_CREATE CSIDL_HISTORY CSIDL_INTERNET_CACHE CSIDL_LOCAL_APPDATA CSIDL_MYPICTURES CSIDL_PERSONAL CSIDL_PROGRAM_FILES CSIDL_PROGRAM_FILES_COMMON CSIDL_SYSTEM CSIDL_WINDOWS
久病成医 | Prolonged Illness Makes the Patient a Good Doctor