2008-09-26 31 views
7

Vì vậy, tôi có một ứng dụng C# nhỏ cần kiểm tra định kỳ nội dung của các thư mục trên nhiều máy trên mạng. Tôi nghĩ rằng tôi chỉ có thể đọc \ hostname \ C $ như một đường dẫn thư mục, nhưng với các lớp Directory bình thường có vẻ không phải là một cách để xác thực đối với các máy chủ khác để bạn có thể truy cập vào chia sẻ ẩn. Tôi chắc chắn có một cách dễ dàng để làm điều này mà tôi đã bỏ qua, nhưng tại thời điểm này tôi là một chút stumpted.Đọc chia sẻ ẩn trong C#

+0

Điều này sẽ hiệu quả. Ngoại lệ bạn đang nhận được là gì? –

Trả lời

6

Từ http://bytes.com/forum/thread689145.html:

Tất cả quá trình chạy trong bối cảnh của một tài khoản người dùng đã đăng nhập trong . Nếu bạn muốn mở tệp trên máy tính khác, ứng dụng của bạn phải đang chạy trong ngữ cảnh của người dùng có quyền để mở tệp trên máy đó. Bạn có thể làm điều này với Mạo danh.

Cách dễ nhất có vẻ là cung cấp cho người dùng hiện tại quyền thích hợp trên các máy khác.

+1

Đây là cách tiếp cận tốt nhất là tốt, vì nó sẽ loại bỏ sự cần thiết phải đối phó với xác thực trong phần mềm của bạn (đó là dễ dàng để có được sai). – Luke

0

Bạn đang tìm cách thiết lập người dùng hiện tại vào thời gian chạy?

Nếu không, miễn là người dùng chạy quá trình này có quyền truy cập vào những máy móc, điều này sẽ làm việc cho bạn:

DirectoryInfo di = new DirectoryInfo(@"\\machineName\c$\temp"); 

FileInfo[] files = di.GetFiles(); 

foreach (FileInfo f in files) 
{ 
    Debug.WriteLine(f.Name); 
} 
2

Để xác thực với thị phần mà người dùng chạy quá trình này không được phép (mà thường là trường hợp đối với cổ phiếu hành chính), hãy thử chạy lệnh net Use:

net use SERVERNAME\IPC$ /user:USERNAME PASSWORD 

thử chạy này trong một quá trình riêng biệt trước khi mã mà thực sự cố gắng để truy cập vào phần, ví dụ:

0.123.
ProcessStartInfo psi = new ProcessStartInfo(
    "net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD); 
Process p = new Process(); 
p.StartInfo = psi; 
p.Start(); 
p.WaitForExit(); 
p.Close(); 
// The code to access the share follows... 

Điều này hữu ích nếu không thích hợp để cấp quyền chia sẻ cho tài khoản người dùng đang chạy quy trình, ví dụ: đối với một mô hình bảo mật nơi ứng dụng người dùng cuối cần truy cập dữ liệu trên một phần mà người dùng đó không nên có quyền truy cập trực tiếp.

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