【问题标题】:Check if path is on network检查路径是否在网络上
【发布时间】:2015-11-18 00:42:18
【问题描述】:

在我的应用程序中,我有一个对话框,用户可以在其中选择数据库备份位置。
如果他/她选择的位置“可能不安全”,我想警告用户。

我想认为以下位置是安全的:

  1. When selected folder is on a network
    (通过映射驱动器 (I:\Backup) 或 UNC 表示法 (\\server2\backup))
  2. 当所选文件夹与数据库文件夹位于不同的物理磁盘上时

如何获取有关所选文件夹的此类信息?
我知道 DriveInfo 类,但它只处理驱动器号,不处理 UNC 路径。

【问题讨论】:

  • 嗨,罗伯特!如果以下答案之一提供了可行的解决方案,您能否接受该答案作为答案,以便该问题不再显示为 unanswered。谢谢!

标签: c# .net vb.net


【解决方案1】:

看看PathIsNetworkPath函数:

class Program
{
    [DllImport("shlwapi.dll")]
    private static extern bool PathIsNetworkPath(string pszPath);

    static void Main(string[] args)
    {
        Console.WriteLine(PathIsNetworkPath("i:\Backup"));
    }
}

【讨论】:

  • 仅供参考:该函数不会验证指定的网络资源是否存在、当前是否可访问,或者用户是否有足够的权限访问它。
【解决方案2】:

查看DirectoryInfo 对象。在选定的路径上打开一个,您可以检查很多东西。也许您可能想获取DirectorySecurity 并检查路径是否被锁定。

积极主动的程序员可能会为他/她的应用程序备份创建一个新文件夹,并自己创建一个强大的 ACL...

【讨论】:

  • 我认为添加 ACL 不是一个好主意,因为这会增加复杂性,而且最好保持简单。
  • 默认情况下最好是安全的。如果他们避免 unc 帖子并在本地存储。确保存储位置上存在良好的 ACL 是另一层。
猜你喜欢
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 2018-03-09
  • 2014-02-20
相关资源
最近更新 更多