我正在嘗試創建一個應用程式,該應用程式將從C:\Users\User\Recent. 為此,我想先檢查所有檔案,看看是否應該洗掉該檔案。
我嘗試了很多東西,例如:
const char* path2 = "C:\\Users\\User\\Recent\\";
for (const auto& dirEntry : std::filesystem::recursive_directory_iterator(path2))
{
std::cout << dirEntry << std::endl;
std::cout << "x" << std::endl;
}
這只是不列印任何東西,
當我嘗試使用dirent.h庫中的opendir打開目錄時,它只回傳NULL
const char* path2 = "C:\\Users\\User\\Recent\\";
DIR *dr;
dr = opendir(path2);
// dr = NULL
我嘗試的所有其他方法都給了我類似的結果。
uj5u.com熱心網友回復:
呼叫SHGetFolderPath以獲取“最近”檔案夾的正確位置。它通常位于 %AppData% 內的某個位置。
如果您希望正確“清理”此檔案夾,直接從檔案系統訪問它并不理想,因為注冊表中存盤了鏡像資訊 ( HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs)。
要正確處理此問題,您應該呼叫SHCreateItemFromParsingName要洗掉的檔案和外殼專案,系結BHID_SFUIObject以獲取IContextMenu并呼叫洗掉動詞。或者更好SHGetKnownFolderItem的是,使用而不是查看檔案系統......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528417.html
標籤:C 视窗文件文件系统
