将我的问题提到这个答案:https://stackoverflow.com/a/4016075/698266,特别是第3步说"否则,如果应用程序过去使用过打开或另存为对话框,则会选择最近使用的路径作为初始目录。"
Windows在哪里保存此信息?
注意:通过试验,它似乎链接到应用程序文件名而没有其路径 - 即在不同目录中复制的相同可执行文件"看到"相同的最后路径信息,同时更改exe文件名使对话框指向用户的Documents目录。
我的实际兴趣是用于测试目的。我需要"重置"此信息是为了在类似于第一次运行的条件下测试我的应用程序。
答案 0 :(得分:4)
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
的二进制值中的DWORD列表,列表由0xffffffff终止。
我认为这种变化发生在Vista中,因为那时候添加了新的IFileDialog。当使用自定义模板和/或钩子函数调用GetOpen / SaveFileName时,可能会使用LastVisitedPidlMRULegacy。
答案 1 :(得分:2)
我终于找到了答案。
对于Windows 10(在不同版本的Windows中可能会有所不同,正如David指出的那样),注册表中有一个值列表,用于跟踪可执行文件名及其相关的最后“访问”路径。
列表可以在这个键中找到:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU
要重置特定程序的默认打开/保存路径,您必须找到其数据字符串(UNICODE)以可执行文件名开头的值并将其删除。如果你看数据字符串,你会注意到最后一个使用的路径在可执行文件名之后。