2010-02-08 32 views
8

Có thể kiểm tra chuyển hướng thư mục trong .net không? Tôi không có nghĩa là reparse điểm/junctions, tôi có nghĩa là khi một thư mục (thường My Documents) được chuyển hướng đến một máy chủ.Kiểm tra chuyển hướng thư mục "Tài liệu của tôi"

Trong trường hợp này, nếu bạn đang đi qua hệ thống thư mục của PC, bạn sẽ gặp lỗi IO nếu bạn đến phiên bản thư mục cục bộ. Vì vậy, nó sẽ hữu ích để có thể kiểm tra chuyển hướng thư mục My Documents, để có thể thực hiện hành động (bỏ qua thư mục, nhảy lên máy chủ, v.v.).

Tôi biết tôi có thể lấy vị trí của Tài liệu của tôi (nhưng chỉ dành cho người dùng hiện tại) sử dụng Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) nhưng điều đó không giúp tôi kiểm tra nó trước (nhiều khả năng) người dùng.

Tôi có cần sử dụng một cái gì đó như SHGetKnownFolderPath không?

Trả lời

0

Tôi không chắc chắn mục tiêu bạn đang cố gắng tiếp cận, bạn có thể nhận thư mục ở bất cứ đâu trong cây mà bạn có thể không có quyền truy cập để bạn phải bắt ngoại lệ. Nhưng một cách để xác định xem bạn đang xử lý một ổ đĩa mạng có thể sử dụng DriveInfo kết hợp với truy vấn gốc của thư mục mydocuments.

+0

Tôi sẽ luôn luôn nắm bắt các ngoại lệ, nhưng nếu có thể, tôi muốn xác định trước các ngoại lệ có thể dự đoán – hawbsl

1

Sẽ rất khó để nhận được giải pháp không có lỗi 100% này (ngoại trừ bắt ngoại lệ khi truy cập - như người trả lời khác đã đề xuất) - nhưng đây là ảnh đẹp nhất của tôi.

Tạo Dictionary<string, string> được đánh dấu bằng nhiều vị trí phổ biến nhất cho các thư mục này (ví dụ: 'c: \ users [tên người dùng] \ My Documents', 'd: \ users [tên người dùng] \ My Documents') cùng với vị trí thực tế mà chúng thực sự là, từ Environment. Khi bạn đi theo hệ thống phân cấp thư mục, tra cứu thư mục trong từ điển này để xem bạn có mục nhập hay không (nếu bạn sử dụng Từ điển - hãy sử dụng trình so sánh StringComparer.InvariantCultureIgnoreCase để xây dựng để tránh bị nhầm lẫn với trường hợp đường dẫn).

Tôi phải nói, mặc dù, bạn có thể chỉ cần phải nghỉ mát để bắt ngoại lệ IO cuối cùng; vì cấu trúc thư mục là hoàn toàn riêng tư - nếu tôi có bản sao lưu thư mục Users \ của mình trên Drive D: thì cách tiếp cận này sẽ bị lẫn lộn!

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