C# 使用其他域/用户名/密码将文件复制到另一个目录

Posted

技术标签:

【中文标题】C# 使用其他域/用户名/密码将文件复制到另一个目录【英文标题】:C# copy file to another directory using other domain/username/password 【发布时间】:2011-02-14 06:05:51 【问题描述】:

在 c# 2008 中, 我正在尝试将文件复制到目标路径(例如 \newserver\destinationFolder),该路径可以在另一个域中或使用与当前用户不同的用户名/密码。在执行 File.Copy(...) 之前如何指定这些新的网络凭据?

谢谢!

【问题讨论】:

***.com/questions/158492/c-network-login 的可能重复项 相关或重复:How to provide user name and password when connecting to a network share、copy files with authentication in c#、Copying files over network (requiring authentication)。 【参考方案1】:

好问题,但我认为这是不可能的。我相信这种类型的文件从一个域复制到另一个域(没有建立信任)将被视为安全漏洞。

一些选项:

    在域之间建立信任并将权限授予当前用户 您可以尝试使用 Shell 执行命令,看看是否可以通过命令行参数完成此操作。我在想“网络使用”命令。

【讨论】:

【参考方案2】:

查看登录用户。这是它的 pinvoke 页面:

http://www.pinvoke.net/default.aspx/advapi32.logonuser

【讨论】:

【参考方案3】:

MapDrive => 以本地用户身份复制文件 => UnmapDrive。看看here:

    protected int MapDrive()
        NETRESOURCEA[] resources = new NETRESOURCEA[1];
        resources[0] = new NETRESOURCEA();
        resources[0].dwType = 1;
        int dwFlags = 1;
        resources[0].lpLocalName = _DriveLetter;
        resources[0].lpRemoteName = _Path;
        resources[0].lpProvider = null; 
        int ret = WNetAddConnection2A(resources, null, null, dwFlags);
        return ret;
    

    protected int UnmapDrive()
    
        int ret = WNetCancelConnection2A(_DriveLetter, 0, true);
        return ret;
    

【讨论】:

以上是关于C# 使用其他域/用户名/密码将文件复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用安全/权限设置将文件夹复制到另一个目的地

C# 将文件夹中文件复制到另一个文件夹

将 Spark TextArea 文本复制到另一个 Spark TextArea

C# 将一个文件夹中的文件复制到另一个文件夹中

如何将音频文件复制到另一个文件

访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域