Проверьте, находится ли путь в сети - PullRequest
8 голосов
/ 11 февраля 2010

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 11 февраля 2010

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

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

    static void Main(string[] args)
    {
        Console.WriteLine(PathIsNetworkPath("i:\Backup"));
    }
}
0 голосов
/ 11 февраля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...