2010-02-11 45 views
8

Trong ứng dụng của tôi, tôi có một hộp thoại trong đó người dùng có thể chọn vị trí sao lưu cơ sở dữ liệu.
Tôi muốn cảnh báo người dùng nếu vị trí họ chọn là "có thể không an toàn".Kiểm tra xem đường dẫn có đang trên mạng

Tôi muốn xem xét các địa điểm sau đây đảm bảo:

  1. Khi thư mục được lựa chọn là trên mạng
    (hoặc bằng một ổ đĩa ánh xạ (I:\Backup) hoặc ký hiệu UNC (\\server2\backup))
  2. Khi được chọn thư mục nằm trên một đĩa vật lý khác với thư mục cơ sở dữ liệu

Làm cách nào để có được loại thông tin này về một thư mục đã chọn?
Tôi biết về lớp DriveInfo, nhưng nó chỉ xử lý các ký tự ổ đĩa chứ không phải đường dẫn UNC.

+0

Hi Robbert! Nếu một trong các câu trả lời dưới đây cung cấp một giải pháp có thể thực hiện được, bạn có thể chấp nhận giải pháp đó làm câu trả lời hay không, chỉ vì vậy câu hỏi này không còn xuất hiện dưới dạng 'chưa trả lời' nữa. Cảm ơn bạn! –

Trả lời

0

Hãy xem đối tượng DirectoryInfo. Mở một trên con đường đã chọn và bạn có thể kiểm tra nhiều thứ. Có lẽ bạn có thể muốn tìm nạp DirectorySecurity và kiểm tra xem đường dẫn có bị khóa không.

Một lập trình chủ động có thể tạo một thư mục mới cho/sao lưu ứng dụng của mình và tạo ra một ACL mạnh bản thân ...

17

Hãy nhìn vào các PathIsNetworkPath chức năng:

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

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

Chỉ cần một FYI: Chức năng không xác minh rằng tài nguyên mạng được chỉ định tồn tại, hiện có thể truy cập hoặc người dùng có đủ quyền truy cập vào nó. –

Các vấn đề liên quan