我正在嘗試獲取Windows用戶配置文件路徑的父文件夾。但我找不到任何「參數」來使用SHGetSpecialFolderPath
,到目前爲止我使用的是CSIDL_PROFILE
。如何使用C++獲取Windows用戶配置文件路徑的父文件夾
預期路徑:
Win7的 - 「C:\用戶」
的Windows XP - 「C:\ Documents和設置」
我正在嘗試獲取Windows用戶配置文件路徑的父文件夾。但我找不到任何「參數」來使用SHGetSpecialFolderPath
,到目前爲止我使用的是CSIDL_PROFILE
。如何使用C++獲取Windows用戶配置文件路徑的父文件夾
預期路徑:
Win7的 - 「C:\用戶」
的Windows XP - 「C:\ Documents和設置」
6.0外殼libary版本,您有此值已刪除(請參閱here),您必須使用自己的解決方法。CSIDL_PROFILES
(不要與CSIDL_PROFILE
混淆),它給你你想要的。
在你要實現自己的解決辦法,比如尋找可能的路徑分隔符(S),即在Windows \
和/
,並在最後一個結束的字符串的任何先前的版本。一個簡單的版本可以使用strrchr
(或wcsrchr
)來定位反斜槓,然後(假設字符串是可寫的)終止該位置處的字符串。
例子:
char* path;
// Retrieve the path at this point, e.g. "C:\\Users\\username"
char* lastSlash = strrchr(path, '\\');
if(!lastSlash)
lastSlash = strrchr(path, '/');
if(lastSlash)
*lastSlash = 0;
當然GetProfilesDirectory
(即躲避我),你在這個答案評論指出,或。
謝謝@ ox0000022l,GetProfilesDirectory也會這樣做。 – JChan 2012-07-12 19:40:53
@JChan:很好的電話,爲了完整性將它編輯成我的答案。這可能就是爲什麼'CSIDL_PROFILES'被快速報廢的原因。 – 0xC0000022L 2012-07-12 19:43:57
對於除了向用戶顯示路徑之外的大多數用途,它應該將"\\.."
(或"..\\"
,如果以反斜槓結尾)附加到相關路徑。
僅限當前用戶或可能是其他用戶? – 0xC0000022L 2012-07-12 18:29:06
例如:我正在使用CSIDL_PROFILE獲取當前用戶路徑,我正在尋找類似的方式來獲取當前用戶配置文件路徑的父文件夾。 – JChan 2012-07-12 18:33:33
你想要父路徑。這把我扔了。此外,關於'CSIDL_PROFILE'的這些信息屬於*你的問題。我在問題中解決了這個問題。如果我有什麼問題,請閱讀並更正。 – 0xC0000022L 2012-07-12 18:34:26