Как представить учетные данные для открытия файла?
Как мне указать имя пользователя и пароль, чтобы моя программа открыла файл для чтения? Программа, которая должна получить доступ к файлу, запускается из учетной записи, которая не имеет доступа для чтения к папке, в которой находится файл. Программа написана на 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. Иронично, а?