我必须将一些文件从服务器复制到另一个文件,我想使用File.Copy
但我如何在那里指定文件的位置?并且还可以在和之间进行密码识别。
有什么想法吗?
答案 0 :(得分:4)
如果这些是同一本地网络上的两台服务器,并且您具有相应的访问权限,则可以使用File.Copy
方法,并在Windows资源管理器中传递通常用于访问网络共享的路径(这可能是UNC路径,如\\TheRemoteServer\SharedFolder\MyFiles
)。如果您可以在资源管理器中复制该文件,File.Copy
方法也很可能会成功。
但是,如果您需要作为远程服务器上的其他用户进行身份验证以获得复制文件的适当权限,那么事情会变得更复杂,因为没有简单的.NET API。您可以查看this answer to another question。本质上,它调用以不同的用户身份登录到远程计算机。登录后,您可以正常执行文件复制。
另请参阅此问题:Accessing a Shared File (UNC) From a Remote, Non-Trusted Domain With Credentials - 主要是建议使用WNetUseConnection
连接到具有身份验证的远程计算机上的UNC路径的答案。
最后,作为预防措施,我觉得我必须指出,无论何时开始进行网络文件复制,在盲目开始复制之前都需要非常小心地检查网络路径的可用性(远程服务器)可能会失败,本地机器可能已失去与网络的连接等。)您可能还需要考虑处理网络操作超时的情况。
答案 1 :(得分:0)
您可能希望使用FTP或SSH作为传输方法来执行此类操作。您只需在服务器端设置正确的服务即可使用这些通信方法。
然后你需要一个说这些协议的.Net库。这是一个:
http://www.weonlydo.com/FtpDLX.NET/ftp-sftp-ssl-net.asp
它有效,但出于各种原因,我并没有给它留下深刻的印象。我相信还有更多。
并且,是的,每个协议都会挑战连接系统的用户名/密码。
答案 2 :(得分:0)
如果你有管理员权限,我会为“密码识别从和到”部分添加一个答案:
像这样使用管理员共享:
\\server\c$