C# Win Form - 只允许在本地 PC 上保存文件

C# Win Form - Allow to save file only on LOCAL PC

简介

我正在尝试通过我的软件备份 SQL 数据库。在运行时,软件会询问用户他希望将备份存储在哪里。

要求

现在,我的要求是用户只能在 PC 本身或连接到它的任何 pendrive 上创建备份,但不能在网络 PC 上创建备份。

我想出的解决方案

这是我使用的代码:-

SaveFileDialog obj = new SaveFileDialog();
obj.DefaultExt = ".bak";
obj.FileName = FileName;
obj.ShowDialog();
if (obj.FileName != null && obj.FileName != "" && obj.FileName.StartsWith("\\") == false)
{
     //Save File Work
}

问题

现在,我想问问你们,这段代码 obj.FileName.StartsWith("\\") == false 是否足以阻止用户保存在网络驱动器上,或者我是否应该使用任何其他方法来防止这种情况发生?

您可以检查路径是否为网络路径并使用 new Uri(mypath).IsUnc 然后根据该

阻止用户

所以代码会像

if (new Uri(path).IsUnc || IsNetworkPath(path))
{
  //show message not allowed
  return;
}

//for checking path is network or not 
private bool IsNetworkPath(path) 
{
    FileInfo file = new FileInfo(path);
    DriveInfo drive = new DriveInfo(file.Directory.Root.FullName);
    return dive.DrivType == DrivType .Network;    
}