[英]Delphi TOpenDialog/TSaveDialog last used path
請將我的問題提到這個答案: https : //stackoverflow.com/a/4016075/698266 ,特別是第3步說“否則,如果應用程序過去使用過打開或另存為對話框,那么最近使用的路徑被選為初始目錄。“
Windows在哪里保存這些信息?
注意:通過實驗,它似乎鏈接到應用程序文件名而沒有其路徑 - 即在不同目錄中復制的相同可執行文件“看到”相同的最后路徑信息,而更改exe文件名使對話框指向用戶的文檔目錄。
我的實際興趣是用於測試目的。 我需要“重置”此信息,以便在類似於第一次運行的條件下測試我的應用程序。
Windows XP使用HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedMRU
,每個項目的格式似乎是ExeFilename + Path,兩個字符串都以零終止並采用UTF-16LE格式。 MRU列表存儲為名為MRUList
的字符串。
較新版本的Windows使用HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRU
和HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRULegacy
,格式似乎是ExeFilename + ItemIdList (UTF-16LE中的ExeFilename)零終止)。 MRU列表似乎是名為MRUListEx
的二進制值中的MRUListEx
列表,列表由0xffffffff終止。
我認為改變發生在Vista中,因為這是添加新的IFileDialog的時候。 當使用自定義模板和/或鈎子函數調用GetOpen / SaveFileName時,可能會使用LastVisitedPidlMRULegacy。
我終於找到了答案。
對於Windows 10(在不同版本的Windows中可能會有所不同,正如David指出的那樣),注冊表中有一個值列表,用於跟蹤可執行文件名及其相關的最后“訪問”路徑。
該列表可在此密鑰中找到:
HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRU
要重置特定程序的默認打開/保存路徑,您必須找到其數據字符串(UNICODE)以可執行文件名開頭的值並將其刪除。 如果你看數據字符串,你會發現最后一個使用的路徑在可執行文件名之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.