Как представить учетные данные для открытия файла?

Как мне указать имя пользователя и пароль, чтобы моя программа открыла файл для чтения? Программа, которая должна получить доступ к файлу, запускается из учетной записи, которая не имеет доступа для чтения к папке, в которой находится файл. Программа написана на C# и.NET 2, работает под XP, а файл находится на компьютере с Windows Server 2003.

3 ответа

Вы хотите выдать себя за пользователя, у которого есть права на доступ к файлу.

Я рекомендую использовать такой класс - http://www.codeproject.com/KB/cs/zetaimpersonator.aspx. Он скрывает всю неприятную реализацию подражания.

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

Я использовал пакет Nuget Галерея NuGet | Simple Impersonation Library 1.1.0, но есть и другие; поиск по подражанию для других.

Пример использования интерактивного входа в систему для работы с файловыми структурами:

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

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

Ответ Джеймса ниже был до Nuget и до того, как он позже получит самый загруженный пакет на Nuget. Иронично, а?

Вы можете выдавать себя за пользователя, который обладает необходимыми правами. На MSDN есть статья, которая описывает, как это сделать.

Другие вопросы по тегам