2008-10-30 39 views
7

Làm cách nào để chỉ định tên người dùng và mật khẩu để chương trình của tôi mở được một tệp để đọc? Chương trình cần truy cập vào tệp đang chạy từ tài khoản không có quyền truy cập đọc vào thư mục tệp. Chương trình được viết bằng C# và .NET 2, chạy dưới XP và tệp nằm trên Máy chủ Windows 2003 máy.Cách trình bày thông tin đăng nhập để mở tệp?

Trả lời

0

Bạn có thể mạo danh người dùng có các quyền cần thiết. Có một số article on MSDN mô tả cách thực hiện việc này.

12

Bạn muốn mạo danh người dùng có quyền truy cập tệp.

Tôi khuyên bạn nên sử dụng một lớp học như thế này - http://www.codeproject.com/KB/cs/zetaimpersonator.aspx. Nó ẩn tất cả việc thực hiện khó chịu của việc mạo danh.

using (new Impersonator("myUsername", "myDomainname", "myPassword")) 
{ 
    string fileText = File.ReadAllText("c:\test.txt"); 
    Console.WriteLine(fileText); 
} 
+0

Công trình này tuyệt vời. Tôi thấy các đường dẫn tệp phải ở định dạng UNC nếu nằm trên một máy khác. –

+1

Làm việc cho tôi quá, đã cho tôi một lúc khiến nó hoạt động vì tôi đã bỏ lỡ nhận xét trên trang được tham chiếu: _Xin lưu ý: Ngữ cảnh người dùng khởi tạo mạo danh (tức là không phải ngữ cảnh người dùng mà nó được chuyển sang) cần có bộ đặc quyền "Hành động như một phần của hệ điều hành "._ –

+0

Thật đáng tiếc khi tác giả của tác giả không bao giờ chuyển nó vào Nuget. Câu trả lời của câu trả lời của tôi chỉ có nghĩa là cho vui; cho nó được hiểu rằng bạn đã trả lời 8 năm trước đây trước Nuget. – OmegaMan

5

Tôi đã sử dụng gói Nuget NuGet Gallery | Simple Impersonation Library 1.1.0 nhưng còn có các gói khác; tìm kiếm Mạo danh cho người khác.

Ví dụ sử dụng bằng cách sử dụng đăng nhập tương tác để làm việc với các cấu trúc file:

using (Impersonation.LogonUser("{domain}", 
           "{UserName}", 
           "{Password}", 
           LogonType.Interactive)) 
{ 
    var directory = @"\\MyCorpServer.net\alpha\cars"; 

    Assert.IsTrue(Directory.Exists(directory)); 
} 

James' câu trả lời dưới đây là trước khi NuGet và trước khi ông sau này sẽ có các gói download nhiều nhất trên NuGet. Mỉm mai hả?

+0

Đơn giản, cảm ơn rất nhiều! –

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