Проверьте, находится ли путь в сети

В моем приложении у меня есть диалоговое окно, в котором пользователь может выбрать место для резервного копирования базы данных.
Я хочу предупредить пользователя, если выбранное место "вероятно, не безопасно".

Я хочу считать следующие места безопасными:

  1. Когда выбранная папка находится в сети
    (либо с помощью подключенного диска (I:\Backup) или обозначение UNC (\\server2\backup))
  2. Когда выбранная папка находится на другом физическом диске, чем папка базы данных

Как я могу получить такую ​​информацию о выбранной папке?
Я знаю о DriveInfo класс, но он обрабатывает только буквы дисков, а не пути UNC.

2 ответа

Взгляните на функцию PathIsNetworkPath:

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

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

Посмотрите на DirectoryInfo объект. Откройте один на выбранном пути, и вы можете проверить много вещей. Возможно, вы захотите получить DirectorySecurity и проверьте, заблокирован ли путь.

Проактивный программист может создать новую папку для резервного копирования своего приложения и создать сильный ACL-список самостоятельно...

Другие вопросы по тегам