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# 使用其他域/用户名/密码将文件复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章