我尝试创建一个C#Windows窗体工具,将整个内容从本地计算机复制到域中的其他计算机上。
复制文件而不是整个目录的大多数解决方案都无法正常工作的问题。
我无法使用Impersonation更改用户上下文,然后使用File.Copy()复制内容,导致远程计算机上的用户与本地计算机上的用户不同。
using ( new Impersonator( "yourUsername", "yourDomain", "yourPassword" ) )
{
// The following code is executed under the impersonated user.
}
同样使用File.Copy():
File.Copy(
@"C:\Users\user\Desktop\file.txt",
@"\\remote\Users\user\Desktop\file.txt"
);
远程路径应该是一个共享路径,这不是这里的情况,因为我有服务器的凭据,但想要将目录复制到特定的非共享位置。
我找到了另一个解决方案,它使用PSexec工具激活服务器上的监听器,然后从我的本地机器发送文件(Socket编程),但它不稳定:you can find it here
我还考虑编写一个可以做到这一点的PowerShell脚本,并从我的C#程序运行它。
这是以正确方式执行此操作的另一种解决方案,将整个目录/目录从本地复制到远程计算机。