如何避免SaveFileDialog中的权限验证?

问题描述 投票:0回答:2

当使用

SaveFileDialog
并选择保存在用户无权写入的文件夹中时,会出现警告对话框并阻止用户继续。

var sfd = new SaveFileDialog
{
    FileName = name,
    InitialDirectory = initial,
    Filter = "Text (.txt)|*.txt",
    DefaultExt = ".txt"
};

var result = sfd.ShowDialog();

有什么方法可以阻止这种验证,同时继续使用

SaveFileDialog
,而不诉诸提升流程?

c# wpf savefiledialog
2个回答
2
投票

简短回答:否。

没有任何设置或属性可用于绕过操作系统的安全机制。

InitialDirectory
属性设置为您知道用户具有写入权限的文件夹,否则就会出现警告。


0
投票

您可以使用

System.Windows.Forms.SaveFileDialog
代替。它有一个
CheckWriteAccess
属性,您可以将其设置为
false
,即使您可能没有写入该文件的权限,也可以检索文件名。

这在您允许通过单独的进程进行提升的情况下非常有用,该进程可以在写入操作中发生

UnauthorizedAccessException
时选择性地执行保存。 VS Code 就是一个例子,如果权限被命中,它会在保存时提升权限。

© www.soinside.com 2019 - 2024. All rights reserved.