【发布时间】:2017-06-15 23:37:01
【问题描述】:
我想避免在一个特定文件夹中打开“另存为”对话框。如果我从该文件夹中打开一个文件,然后执行另存为...,它将在同一个文件夹中开始(如预期的那样)。我想我可以在调用new SaveFileDialog() 后检查InitialDirectory 并在必要时更改它,但它是一个空字符串。
Directory.GetCurrentDirectory() 返回包含可执行文件的文件夹。
var dialog = new SaveFileDialog();
Console.WriteLine(Directory.GetCurrentDirectory()); // Prints "Z:\Documents\Projects\ProjectName\bin\x64\Debug"
Console.WriteLine(dialog.InitialDirectory); // Prints empty string
如何询问 Windows(7 或 10)“另存为...”对话框将从哪个文件夹开始?
编辑
这是一个与“如何设置初始目录?”完全不同的问题。我想在对话框打开之前知道初始目录将是什么,以便我只能在它将成为一个特定目录的情况下更改它。
【问题讨论】:
-
初始目录存储在某个应用程序的基础上。就快速测试显示而言,无论如何都不是注册表中的明文。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU包含一些片段。FileDialog.InitialDirectory无论如何都不会被播种,它似乎是在您调用ShowDialog()之后确定的。 -
@CodeCaster 谢谢。这让我足够接近,以至于我能够通过一些搜索找到答案。最近的目录位于
LastVisitedPidlMRU。解释这些数据是一个不同的问题。