Я работаю над кодом, который может копировать файлы между двумя произвольными сетевыми файловыми ресурсами, то есть:
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:user_of_DirA@domain.net
net use \\pc1.domain.net\Shared\DirB pwd2 /user:user_of_DirB@domain.net
Однако Windows изначально считает, что эти подключения относятся к одному и тому же ресурсу, потому что они находятся на одном компьютере, и иногда кажется, что в приведенном выше случае может произойти ошибка 1219:
Множественные подключения к серверу или общему ресурсу одним и тем же пользователем с использованием более одного имени пользователя не разрешены. Отключите все предыдущие подключения к серверу или общему ресурсу и повторите попытку.
Это означает, что я могу столкнуться с ситуацией, когда невозможно установить два соединения, как указано выше - по крайней мере, тестирование этого вручную с помощью cmd приводит к ошибке 1219. Я в значительной степени вынужден сделать net use /delete
, но это мешает мне делать то, что я хочу (не говоря уже о том, что у пользователя могут быть другие несвязанные соединения с той же машиной, и я должен убить их за него - уродливо). Для меня НЕ имеет смысла, почему в Windows есть это ограничение (я использую 7 и Server 2008 R2).
Есть ли простое решение, при котором я могу иметь два подключения к двум общим папкам на одном удаленном компьютере, установленном из одной учетной записи Windows, без ошибки 1219?
Используя полное доменное имя, имя хоста и IP-адрес, вы можете иметь три подключения с разными учетными данными к одному и тому же серверу.
Например.:
net use \\pc1.domain.net\Shared\DirA /user:user_of_DirA@domain.net pwd1
net use \\pc1\Shared\DirB /user:user_of_DirB@domain.net pwd2
net use \\1.1.1.1\Shared\DirC /user:user_of_DirC@domain.net pwd3
(Я всегда вводил пароль в качестве последнего параметра)