比如获取桌面路径:
// 需要 #include <Shlobj.h>
char path[255];
SHGetSpecialFolderPath(
NULL, // 保留
path, // 接受文件路径的字符串指针
CSIDL_DESKTOPDIRECTORY, // CSIDL 宏
FALSE // 如果文件夹不存在,则不创建文件夹
);cout << "path = " << path << endl;
SHGetSpecialFolderPath 的第三个参数决定了获取哪个文件夹的路径,参考如下:
宏 | 介绍 |
---|---|
CSIDL_ADMINTOOLS、CSIDL_COMMON_ADMINTOOLS | 管理工具 |
CSIDL_ALTSTARTUP、 CSIDL_COMMON_STARTUP、CSIDL_STARTUP | 程序 - 启动 |
CSIDL_APPDATA | AppData |
CSIDL_CDBURN_AREA | 临时刻录文件夹 |
CSIDL_COMMON_TEMPLATES、CSIDL_TEMPLATES | Templates |
CSIDL_COMMON_APPDATA | ProgramData |
CSIDL_COMMON_DESKTOPDIRECTORY、CSIDL_DESKTOP、CSIDL_DESKTOPDIRECTORY | 桌面 |
CSIDL_COMMON_DOCUMENTS、CSIDL_MYDOCUMENTS、CSIDL_PERSONAL | 文档 |
CSIDL_COMMON_FAVORITES、CSIDL_FAVORITES | 收藏夹 |
CSIDL_COMMON_MUSIC、CSIDL_MYMUSIC | 音乐 |
CSIDL_COMMON_PICTURES、CSIDL_MYPICTURES | 图片 |
CSIDL_COMMON_PROGRAMS、CSIDL_PROGRAMS | 开始菜单 - 程序 |
CSIDL_COMMON_STARTMENU、CSIDL_STARTMENU | 开始菜单 |
CSIDL_COMMON_VIDEO 、CSIDL_MYVIDEO | 视频 |
CSIDL_COOKIES | INetCookies |
CSIDL_FONTS | 字体 |
CSIDL_HISTORY | 历史 |
CSIDL_INTERNET_CACHE | INetCache |
CSIDL_LOCAL_APPDATA | AppData/Local |
CSIDL_NETHOOD | Network Shortcuts |
CSIDL_PRINTHOOD | Printer Shortcuts |
CSIDL_PROFILE | 当前用户(Administrator) |
CSIDL_PROGRAM_FILES 、CSIDL_PROGRAM_FILESX86 | Program Files |
CSIDL_PROGRAM_FILES_COMMON、CSIDL_PROGRAM_FILES_COMMONX86 | Common Files |
CSIDL_RECENT | 最近使用的项目 |
CSIDL_RESOURCES | Resources |
CSIDL_SENDTO | 发送到 |
CSIDL_SYSTEM | System32 |
CSIDL_SYSTEMX86 | SysWOW64 |
CSIDL_WINDOWS | Windows |