Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Win表单-仅允许在本地PC上保存文件 简明的_C#_Winforms_.net 3.5_Backup Sqldatabase - Fatal编程技术网

C#Win表单-仅允许在本地PC上保存文件 简明的

C#Win表单-仅允许在本地PC上保存文件 简明的,c#,winforms,.net-3.5,backup-sqldatabase,C#,Winforms,.net 3.5,Backup Sqldatabase,我正试图通过我的软件备份SQL数据库。在运行时,软件会询问用户希望将备份存储在何处 要求 现在,我的要求是,用户只能在PC本身或连接到它的任何pendrive上创建备份,但不能在网络PC上创建备份 我想出的解决办法 以下是我正在使用的代码:- SaveFileDialog obj = new SaveFileDialog(); obj.DefaultExt = ".bak"; obj.FileName = FileName; obj.ShowDialog(); if (obj.FileName

我正试图通过我的软件备份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
是否足以阻止用户在网络驱动器上进行保存,或者是否有其他方法可以防止这种情况发生?

您可以检查路径是否为网络路径,并使用
新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;    
}

我可能可以使用
pushd
预先映射网络驱动器来解决此限制。您可以使用
新Uri(mypath).IsUnc检查路径是否为网络路径,然后根据that@PranayRana是的,它很完美。你能把它写成一本书吗answer@Agent_Spock-添加可能会有所帮助。