2010-02-11 4 views
8

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

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

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

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

+0

Hi Robbert! Если один из приведенных ниже ответов предоставил приемлемое решение, не могли бы вы принять его в качестве ответа, так что этот вопрос больше не отображается как «без ответа». Спасибо! –

ответ

0

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

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

17

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

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

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

Просто FYI: функция не проверяет, что указанный сетевой ресурс существует, в настоящее время доступен или у пользователя есть достаточные разрешения для доступа к нему. –

Смежные вопросы