??? [轉]使用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 閱讀(763)
評論(0) 編輯 收藏 引用