[转]使用Shell API读取"特殊"路径设置
最近编码,在取用户文档数据目录时,遇到问题:
我的做法是:<系统盘> + "\Documents and Settings\" + <用户名> + "\Application Data\"
为啥这么麻烦,因为当时我没有找到合适的API,有什么问题呢?
问题出在用户名,假如我的用户名是Stone,但文档数据目录却有可能存在两种,一是:Stone,
还有可能是 Stone.域名。但实际上Stone都是域用户。出现此情况的原因不明。而取用户名的函数用
的是 GetUserName(也试过其它),域名当然也可以取出,但何时带域名,何时不带域名的规律不得而
知。
所以,还是只能去查到API,其实Windows Shell API有此类函数,只不过使用比较特殊。
代码如下:
LPITEMIDLIST pidl;
SHGetSpecialFolderLocation(NULL,CSIDL_APPDATA,&pidl);
if ( pidl ) {
TCHAR szPathName[1024];
SHGetPathFromIDList(pidl,szPathName);
LPMALLOC pMalloc;
SHGetMalloc( &pMalloc );
pMalloc->Free(pidl);
}
更换其中参数CSIDL_APPDATA,可以得到很多的系统设置值。用此方法,将前文所讲的判定给了
API,不再有问题。
posted on 2006-05-25 00:10
Jerry Cat 阅读(739)
评论(0) 编辑 收藏 引用