[英]How to get the AppData path
SHGetSpecialFolderPathA(NULL,buffer, CSIDL_APPDATA,FALSE );
C:\\Users\\guest\\AppData\\Roaming
SHGetSpecialFolderPathA(NULL,buffer, CSIDL_LOCAL_APPDATA,FALSE );
C:\\Users\\guest\\AppData\\Local
有沒有辦法使用Windows API獲得路徑C:\\Users\\guest\\AppData
?
漫游和本地文件夾的存在是有原因的,有時您可能需要在配置文件的根目錄中放入一些內容,但實際上並不需要這樣做。 這是MSDN關於CSIDL_PROFILE的說法:
應用程序不應在此級別創建文件或文件夾; 他們應將其數據放在CSIDL_APPDATA或CSIDL_LOCAL_APPDATA所指的位置下。 但是,如果要創建新的“已知文件夾”,則由CSIDL_PROFILE引用的配置文件根目錄是合適的。
在NT5上,它們甚至沒有相同的父文件夾,並且“漫游”位於配置文件的根目錄中:
C:\Documents and Settings\username\Application Data
C:\Documents and Settings\username\Local Settings\Application Data
用戶和/或域管理員可以將這些文件夾移動和/或重定向到任何地方,到其他驅動器或網絡共享的根目錄。
我能想到的唯一找到母公司的記載方法是使用IKnownFolderManager :: GetFolder ,然后調用IKnownFolder::GetFolderDefinition
並查看KNOWNFOLDER_DEFINITION.fidParent
(請記住,不必一定是母公司,IKnownFolderManager :: Redirect將字符串作為目標,因此重定向的文件夾可以在任何地方)
如果要排除特殊Shell文件夾下的文件,則應將路徑與PathCommonPrefix或IKnownFolderManager :: FindFolderFromPath之類的路徑進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.