首页 > 解决方案 > 使用模拟 C# 将文件复制到共享驱动器

问题描述

我想将文件复制到共享文件夹。我可以手动复制文件,但我想安排它每小时运行一次。

首先我制作了一个批处理文件:

xcopy "D:\DATA\file.bak" "\\SharedFolder\DATA\"

它显示文件已被复制,但共享文件夹中没有任何内容。

接下来我尝试使用File.Copy,但没有按预期工作。我发现我需要为此拥有一个用户身份

所以,这是我的代码:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
IntPtr user = IntPtr.Zero;
bool loggedon = LogonUser(
"User", //Username
"Domain", //Domain
"", // Password
2, // interactive
0, // default
out user);
if (loggedon)
{
  using (WindowsIdentity.Impersonate(user))
  {
    File.Copy(Sourcepath, DestPath, true);
    MessageBox.Show("Done");
  }
}
else
{
  MessageBox.Show("Failed");
}

但是这个帐户没有密码,所以我不知道在密码字段中输入什么。

还有其他方法可以模拟当前登录的用户吗?还是我需要设置密码?

标签: c#authenticationcopy-pastenetwork-drive

解决方案


推荐阅读