我正在研究可以在两个任意networking文件共享之间复制文件的代码,即:
copy files from \\pc1.domain.net\Shared\DirA // source shared folder to \\pc2.domain.net\Shared\DirB // target shared folder
在内部,这通过首先调用net usebuild立到特定远程机器上的共享文件夹的(匿名)连接来工作。 在上述情况下,同时build立两个连接,然后从源共享中读取文件并以块为单位写入目标共享。
我在这里所关心的一个问题是源共享文件夹和目标共享文件夹都在同一个远程机器上 – 这可能会导致“多连接”错误(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在devise上似乎认为这些连接是指同一个资源,因为它们在同一台机器上,有时在上述情况下可能会发生错误1219:
不允许同一用户使用多个用户名连接到服务器或共享资源。 断开与服务器或共享资源的所有连接,然后重试。
这意味着我可能会遇到无法build立两个连接的情况 – 至less通过cmd手动testing会导致错误1219.我几乎不得不做一个net use /delete ,但是这可以防止我从做我想做的事情(更不用说,用户可能有其他无关的连接build立到同一台机器,我必须杀死他们 – 丑陋)。 这对我来说没有意义,为什么Windows有这个限制(我使用7和Server 2008 R2)。
有没有一个简单的解决scheme,我可以有两个连接到同一个Windows帐户build立的同一个远程机器上的两个共享文件夹,而不会出现错误1219 ?
通过使用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
(我一直input密码作为最后一个参数)