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

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

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

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

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

8
задан Marcus Mangelsdorf 17 November 2015 в 16:42
поделиться

2 ответа

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

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

0
ответ дан 5 December 2019 в 09:25
поделиться

Посмотрите на функцию PathIsNetworkPath:

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

    static void Main(string[] args)
    {
        Console.WriteLine(PathIsNetworkPath("i:\Backup"));
    }
}
18
ответ дан 5 December 2019 в 09:25
поделиться