当使用
SaveFileDialog
并选择保存在用户无权写入的文件夹中时,会出现警告对话框并阻止用户继续。
var sfd = new SaveFileDialog
{
FileName = name,
InitialDirectory = initial,
Filter = "Text (.txt)|*.txt",
DefaultExt = ".txt"
};
var result = sfd.ShowDialog();
有什么方法可以阻止这种验证,同时继续使用
SaveFileDialog
,而不诉诸提升流程?
简短回答:否。
没有任何设置或属性可用于绕过操作系统的安全机制。
将
InitialDirectory
属性设置为您知道用户具有写入权限的文件夹,否则就会出现警告。
您可以使用
System.Windows.Forms.SaveFileDialog
代替。它有一个 CheckWriteAccess
属性,您可以将其设置为 false
,即使您可能没有写入该文件的权限,也可以检索文件名。
这在您允许通过单独的进程进行提升的情况下非常有用,该进程可以在写入操作中发生
UnauthorizedAccessException
时选择性地执行保存。 VS Code 就是一个例子,如果权限被命中,它会在保存时提升权限。