How do I specify the username and password in order for my program to open a file for reading? The program that needs to access the file is running from an account that does not have read access to the folder the file is in. Program is written in C# and .NET 2, running under XP and file is on a Windows Server 2003 machine.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You want to impersonate a user who does have the rights to access the file.
I recommend using a class like this - http://www.codeproject.com/KB/cs/zetaimpersonator.aspx. It hides all the nasty implementation of doing impersonation.
using (new Impersonator("myUsername", "myDomainname", "myPassword"))
{
string fileText = File.ReadAllText("c:\test.txt");
Console.WriteLine(fileText);
}
回答2:
I have used the Nuget package NuGet Gallery | Simple Impersonation Library 1.1.0 but there are others; search on Impersonation for the others.
Example usage using the interactive login to work with file structures:
using (Impersonation.LogonUser("{domain}",
"{UserName}",
"{Password}",
LogonType.Interactive))
{
var directory = @"\\MyCorpServer.net\alpha\cars";
Assert.IsTrue(Directory.Exists(directory));
}
James' answer below was before Nuget and before he would later have the most downloaded package on Nuget. Ironic eh?
回答3:
You can impersonate a user who has the necessary rights. There is an article on MSDN that describes how to do this.