Проверьте, находится ли путь в сети
В моем приложении у меня есть диалоговое окно, в котором пользователь может выбрать место для резервного копирования базы данных.
Я хочу предупредить пользователя, если выбранное место "вероятно, не безопасно".
Я хочу считать следующие места безопасными:
- Когда выбранная папка находится в сети
(либо с помощью подключенного диска (I:\Backup
) или обозначение UNC (\\server2\backup
)) - Когда выбранная папка находится на другом физическом диске, чем папка базы данных
Как я могу получить такую информацию о выбранной папке?
Я знаю о 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-список самостоятельно...