.net windows api:获取或设置文件打开对话框使用的最新目录

时间:2010-12-12 18:09:41

标签: .net fileopendialog

有没有办法设置或获取vista文件打开对话框使用的初始目录,而无需在文件打开对话框中设置InitialDirectory属性?

我希望我的WPF(在启动时)为所有打开/保存对话框设置一次默认文件夹。如果您在Vista中发现只要机器正在运行,它就会继续默认/跟踪用户最后选择的目录,从任何文件打开/另存为对话框。记事本或任何程序以这种方式行事。

我试图完成此操作的原因是因为我不想在我的应用程序中跟踪它,设置和保存文件夹。我想设置默认值,然后让vista跟踪它。

Directory.SetCurrentDirectory不会这样做。

2 个答案:

答案 0 :(得分:3)

您排除了解决问题所需的确切事项。如果未设置InitialDirectory,则对话框将使用上次使用的目录。此信息存储在注册表中,由进程名称索引。您无法选择性地关闭此行为。

使用的注册表项在Windows版本之间一直在变化。我想在Win7上它现在是HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedPidlMRU。它不再像以前版本那样明文。如果您想冒险尝试解析其中列出的键值,请确保验证Windows版本。坦率地说,这不值得为初始化InitialDirectory属性而编写的简单代码。

答案 1 :(得分:0)

如果您不想编写代码来继续加载和保存OpenFileDialog的目录,请编写一个执行此操作的包装函数,然后调用您的包装函数...