簡體   English   中英

如何獲取AppData路徑

[英]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文件夾下的文件,則應將路徑與PathCommonPrefixIKnownFolderManager :: FindFolderFromPath之類的路徑進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM