我有一个文本框和一个表单中的按钮。我想在单击按钮时将文件保存到文本框中输入的网络路径中。我尝试了下面给出的代码。
private void button1_Click(object sender, EventArgs e)
{
string destinationPath = txtFilePath.Text.ToString();
string sourceFile = @"c:\1.txt";
string fileName = Path.GetFileName(sourceFile);
System.IO.File.Copy(sourceFile, Path.Combine(destinationPath, fileName));
}
如果目标提供了更改内容的权限,它可以正常工作。如果目的地是“只读”,那么它会给出错误。如果输入为\ 192.168.0.24 \ aqm,则显示下面显示的错误(路径没有写入权限)
拒绝访问路径'\ 192.168.0.24 \ aqm \ 1.txt'。
无论如何都要解决这个问题。我的意思是,如果目的地是只读的,那么它提示该系统的用户名和密码,如果用户名密码输入正确,则将文件保存到该目录。用户知道网络中所有计算机的用户名和密码。不能给某些安全原因的每个系统的写入权限。这就是为什么我正在寻找上面建议的方法
或任何其他方式? 希望有人帮助我
答案 0 :(得分:2)
我可以用另一种方式建议你。如果可能,请创建Windows服务。将服务登录设置为帐户哪个管理员权限。使用Windows服务进行复制过程。我在我的一个项目中使用此算法。如果服务使用管理员凭据登录,则效果很好。计算机具有带有管理员凭据的Windows服务可以轻松地在任何网络计算机上复制文件。例如,将System Timer放入您的服务中。让服务每5分钟检查一次路径。如果给定路径中存在文件,则通过提供路径获取文件并复制到网络机器。
答案 1 :(得分:1)
您可以要求用户输入用户名和密码,然后将其传递给WNetAddConnection3之类的功能(有关如何通过C#调用它,请参阅http://www.pinvoke.net/default.aspx/mpr/WNetAddConnection3.html。)
答案 2 :(得分:0)
我认为如果目的地是只读的,除了通知用户该文件因为dest只读而无法保存时,你可以做的事情不多。