如何将文件从UNC共享复制到本地系统?

时间:2011-06-28 13:49:27

标签: c# .net unc windows-identity

我坚持这个问题。

我有UNC分享,我知道帐户详细信息,但有权访问,但它无法访问我的本地系统。 我可以通过以下方式访问远程UNC:

var token = default(IntPtr);
var context = default(WindowsImpersonationContext);
LogonUser(_config.Username, _config.Domain, _config.Password, 2, 0, out token);
context = WindowsIdentity.Impersonate(token);

//TODO :: System.IO operations
File.Copy("remote-unc-path","local-path",true); // Exception : Access is denied.

context.Undo();
CloseHandle(token);

但是,我在模拟期间无法访问我的本地系统,因为帐户无法访问它。

如何在这种情况下复制文件?我是否需要使用像缓冲区这样的东西来打开/关闭模拟?

1 个答案:

答案 0 :(得分:4)

你要做的是读取所有字节,然后写下它们:

    var token = default(IntPtr);
    using (var context = default(WindowsImpersonationContext))
    {
       LogonUser(_config.Username, _config.Domain, _config.Password, 2, 0, out token);
       context = WindowsIdentity.Impersonate(token);
       var bytes = File.ReadAllBytes("remote-unc-path");
       context.Undo();
       CloseHandle(token);
       File.WriteAllBytes("local-path", bytes);
    }