C++ ---- 获取Windows操作系统盘的各个目录的路径。

#include <Shlobj.h>
#include <stdio.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL, “chs”);

TCHAR szPath[MAX_PATH];  

int CSIDL[] = {  
    CSIDL_ADMINTOOLS,       CSIDL_APPDATA,  CSIDL_CDBURN_AREA,      CSIDL_COMMON_ADMINTOOLS,    CSIDL_COMMON_APPDATA,  
    CSIDL_COMMON_DESKTOPDIRECTORY,          CSIDL_COMMON_DOCUMENTS, CSIDL_COMMON_FAVORITES,     CSIDL_COMMON_MUSIC,  
    CSIDL_COMMON_PICTURES,  CSIDL_COMMON_PROGRAMS,  CSIDL_COMMON_STARTMENU, CSIDL_COMMON_STARTUP,  
    CSIDL_COMMON_TEMPLATES, CSIDL_COMMON_VIDEO,     CSIDL_COOKIES,          CSIDL_FAVORITES,  
    CSIDL_HISTORY,          CSIDL_INTERNET_CACHE,   CSIDL_LOCAL_APPDATA,    CSIDL_MYDOCUMENTS,  
    CSIDL_MYMUSIC,          CSIDL_MYPICTURES,       CSIDL_MYVIDEO,          CSIDL_PROFILE,      CSIDL_PROGRAM_FILES,  
    CSIDL_PROGRAM_FILES_COMMON,                     CSIDL_PROGRAMS,         CSIDL_RECENT,       CSIDL_SENDTO,  
    CSIDL_STARTMENU,        CSIDL_STARTUP,          CSIDL_SYSTEM,           CSIDL_TEMPLATES,    CSIDL_WINDOWS,  
    0  
};  

for (int i=0;CSIDL[i];i++) {  
    if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL[i], NULL, SHGFP_TYPE_CURRENT, szPath))) {  
        wprintf(L"%d, %s\n", i, szPath);  
    }  
}  

return 0;  

}

在XP上,用VS2010编译通过,假设是win7或者更高版本号,应该用
[cpp] view plain copy

HRESULT SHGetKnownFolderPath(
In REFKNOWNFOLDERID rfid,
In DWORD dwFlags,
In_opt HANDLE hToken,
Out PWSTR *ppszPath
);

结果:

[plain] view plain copy

0, C:\Documents and Settings\Administrator\「開始」菜单\程序\管理工具
1, C:\Documents and Settings\Administrator\Application Data
2, C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\CD Burning
3, C:\Documents and Settings\All Users\「開始」菜单\程序\管理工具
4, C:\Documents and Settings\All Users\Application Data
5, C:\Documents and Settings\All Users\桌面
6, C:\Documents and Settings\All Users\Documents
7, C:\Documents and Settings\All Users\Favorites
8, C:\Documents and Settings\All Users\Documents\My Music
9, C:\Documents and Settings\All Users\Documents\My Pictures
10, C:\Documents and Settings\All Users\「開始」菜单\程序
11, C:\Documents and Settings\All Users\「開始」菜单
12, C:\Documents and Settings\All Users\「開始」菜单\程序\启动
13, C:\Documents and Settings\All Users\Templates
14, C:\Documents and Settings\All Users\Documents\My Videos
15, D:\My Documents\Cookies
16, D:\My Documents\Favorites
17, C:\Documents and Settings\Administrator\Local Settings\History
18, C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
19, C:\Documents and Settings\Administrator\Local Settings\Application Data
20, D:\My Documents
21, D:\My Documents\My Music
22, D:\My Documents\My Pictures
23, D:\My Documents\My Videos
24, C:\Documents and Settings\Administrator
25, C:\Program Files
26, C:\Program Files\Common Files
27, C:\Documents and Settings\Administrator\「開始」菜单\程序
28, C:\Documents and Settings\Administrator\Recent
29, C:\Documents and Settings\Administrator\SendTo
30, C:\Documents and Settings\Administrator\「開始」菜单
31, C:\Documents and Settings\Administrator\「開始」菜单\程序\启动
32, C:\WINDOWS\system32
33, C:\Documents and Settings\Administrator\Templates
34, C:\WINDOWS

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值