我正在研究可以在两个任意网络文件共享之间复制文件的代码,即:
copy files from \\pc1.domain.net\Shared\DirA // source shared folder
to \\pc2.domain.net\Shared\DirB // target shared folder
在内部,它首先通过调用net use
建立与特定远程计算机上的共享文件夹的(匿名)连接来实现。在上述情况下,将同时建立两个连接,然后从源共享读取文件并将其分块写入目标共享。
我在这里担心的是源和目标共享文件夹都在同一台远程计算机上的情况 - 这可能会导致“多个连接”错误(1219)。例如,我想将文件从复制\\pc1.domain.net\Shared\DirA
到\\pc1.domain.net\Shared\DirB
。代码是从同一个 Windows 帐户执行的,文件共享可以具有不同的访问凭据和权限。所以我想做的是,使用同一个 Windows 帐户,执行如下操作:
net use \\pc1.domain.net\Shared\DirA pwd1 /user:[email protected]
net use \\pc1.domain.net\Shared\DirB pwd2 /user:[email protected]
然而,Windows 在设计上似乎认为这些连接引用相同的资源,因为它们位于同一台机器上,有时看起来上述情况下可能会发生错误 1219:
不允许同一用户使用多个用户名多次连接到服务器或共享资源。请断开与该服务器或共享资源的所有先前连接,然后重试。
这意味着我可能会遇到无法像上面那样建立两个连接的情况 - 至少通过 cmd 手动测试会导致错误 1219。我几乎被迫这样做net use /delete
,但这阻止我做我想做的事情(更不用说用户可能在同一台机器上建立了其他不相关的连接,我必须为他终止它们 - 太丑了)。我不明白为什么 Windows 有这个限制(我使用的是 7 和 Server 2008 R2)。
有没有一个简单的解决方案,让我可以从同一个 Windows 帐户建立到同一台远程计算机上的两个共享文件夹的两个连接,而不会遇到错误 1219?
答案1
使用 FQDN、主机名和 IP 地址,您可以与同一台服务器建立具有不同凭据的三个连接。
例如:
net use \\pc1.domain.net\Shared\DirA /user:[email protected] pwd1
net use \\pc1\Shared\DirB /user:[email protected] pwd2
net use \\1.1.1.1\Shared\DirC /user:[email protected] pwd3
(我总是将密码作为最后一个参数输入)