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;
}
简介
我正在尝试通过我的软件备份 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;
}