引用我的问题到这个答案: https : //stackoverflow.com/a/4016075/698266 ,特别是第3步说:“否则,如果应用程序在过去使用打开或另存为对话框,最近使用的path被选为初始目录“。
Windows在哪里保存这些信息?
注意:通过试验,它似乎被链接到应用程序文件名而没有它的path – 即在不同的目录中复制相同的可执行文件“看到”相同的最后path信息,而改变exe文件名使对话框指向用户的文档目录。
我的实际兴趣是用于testing目的。 我需要“重置”这些信息,以便在类似于第一次运行的情况下testing我的应用程序。
Windows XP使用HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU和每个项目的格式似乎是两个字符串零终止和UTF-16LE格式的ExeFilename +路径。 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)以可执行文件名称开头的值并将其删除。 如果你观察数据字符串,你会注意到最后一个使用的路径在那里,在可执行文件的名字后面。