同一用户不能使用多个用户名与服务器或共享资源建立多个连接。

114
在使用Windows 2008 R2时,我们的服务器出现了这个错误:“同一用户使用多个用户名连接到服务器或共享资源是不允许的。请断开与服务器或共享资源的所有先前连接,然后重试。”当尝试在命令行上映射驱动器时。然而,在远程计算机上没有打开的资源管理器窗口,并且在我执行“net use”时远程计算机上也没有显示任何内容。
为什么Windows认为有些东西被连接了,而“net use”报告没有打开任何驱动器或文件夹呢?
如何强制Win停止认为已连接某些内容而不重新启动?
如果我只输入:
 net use n: \\192.168.10.120\test 

它可以工作,但如果我放进

 net use n: \\192.168.10.120\test "<password>" /user:"<domain\username>" 

它会报错。为什么会这样?


1
我没有找到完整的答案,但我发现当我以普通用户或管理员身份运行“net use”时,可以得到两个不同的答案。我发现了这个网站:http://woshub.com/how-to-access-mapped-network-drives-from-the-elevated-apps/,其中有一些有趣的信息,但我仍然不知道确切的原因。下面SunChero的回答最接近。 :) - raphael75
1
@raphael75,我敢打赌当你成功执行了net use n: \192.168.10.120\test后,你会在文件共享服务器上看到一个会话列表,使用net session /list命令属于另一个用户,而不是你在第二个命令行中尝试连接的用户名。 - machinarium
3
Windows用户账户控制机制在网络驱动器映射方面似乎存在缺陷。正如@raphael75所指出的那样,从普通模式/令牌和提升模式/令牌执行net use * /d可以帮助确保所有网络连接都被断开。至少在Windows 7上对我有效。 - Martin Connell
12个回答

198

在我们的网络中,我发现重启客户端计算机上的工作站服务(service)可以解决这个问题。在某些情况下,这种方法可以取代重新启动客户端计算机。但是重启服务更加快速和方便(并且在重新启动不起作用时可能有效)。

我的印象是本地 Windows PC 缓存了一些旧信息,并且这种方法可以清除它们。

有关重启服务的详细信息,请参见此问题。简单来说,就是在命令行上运行以下命令:

C:\> net stop workstation /y
C:\> net start workstation

请注意 - /y 标志将强制服务停止,即使这会中断现有连接。但如果不使用该标志,则会提示用户并等待。因此,在脚本编写中可能是必要的。


请注意,在Windows Server 2016(+可能其他版本)上,这些命令也可能会停止netlogon服务。如果是这样,您需要添加:net start netlogon


10
这对我很有效。之前我的Samba共享可以使用,但突然间不能用了,让我感到困惑。谢谢! - Christopher Townsend
2
尝试映射连接到路由器的驱动器时,我遇到了 OP 发布的错误。您的答案解决了我的问题! - Andreas Evjenth
在我的情况下,重新启动客户端没有起作用,但是这种方法有效。谢谢! - precise
4
我认为这个应该被接受作为答案。它解决了问题,而当前被接受的答案只是提供了一种解决方法。 - Gary Stanton
2
@DerreckDean 谢谢 - 我自己无法验证,但我已将其作为答案中的注释添加了进去。 - StayOnTarget
显示剩余6条评论

74
即使您通过 net use * /del 删除了共享文件夹,在服务器端仍然存在连接。
为解决此问题,微软设计了一种方法,即通过映射驱动器的方式让Windows认为它是另一个服务器上的共享。 最简单的方法是使用DNS别名或IP地址。 在您的情况下,如果您的第一个映射使用IP地址,如 \\ IP \ Share ,则应该使用类似于 \\ ServerName \ Share password / user:Domain \ Username 的东西,这将创建一个新共享和新凭据。
微软称这种行为是按设计进行的...我认为这只是愚蠢的设计。

3
你能否提供更多关于上述“按设计”概念的博客或文章细节? - machinarium
7
这里是微软知识库文章,描述了“按设计”的内容:https://support.microsoft.com/zh-cn/kb/938120 - Marko Živanović
1
同意,这个设计真是太愚蠢了。我尝试了所有可能的方法,包括重新启动工作站服务。最终,在这个问题一直困扰我两年不想重启工作站时(总是在项目进行中),我咬紧牙关:清除了所有的网络使用项,然后重新启动,问题就解决了。 - JayRO-GreyBeard
3
您还可以编辑 c:\windows\system32\drivers\etc\hosts 并为每个不同的用户凭据添加一个额外的条目,解析到相同的IP地址。 - silicontrip
这个有效,所以谢谢。但是为什么重新启动客户端主机并重新发出“net use”命令会起作用呢?连接不还在服务器上吗? - user1062589
显示剩余2条评论

34

按照以下步骤进行:

  • 选择 开始 按钮,然后键入 cmd
  • 右键单击 命令提示符 选项,然后选择 以管理员身份运行
  • 键入 net use,然后按下 Enter
  • 查找可能存在问题的任何列出的驱动器。在许多情况下,导致此问题发生的驱动器可能没有被分配字符。您需要删除该驱动器。
  • 在命令提示符中,键入 net use /delete \\servername\foldername,其中 servername\foldername 是您要删除的驱动器。

1
但是这在 WebDav 连接中不起作用。 ;( - Andrew Savinykh
2
我有同样的问题,但是这个命令返回一个空列表。 - Jerry Dodge

14
这里是一个Powershell的替代方案,用于另一个答案,它使用了net stop|start命令。
Get-Service workstation | Restart-Service -Force

在Windows 10和可能的Windows 11中,该服务的名称是LanmanWorkstation
Get-Service LanmanWorkstation | Restart-Service -Force

2
我必须以管理员身份运行该命令才能使其正常工作。 - deadlydog
2
在Windows 10下,该服务被称为“LanmanWorkstation”。 - t3chb0t
非常感谢。在我的Win 11上运行得很好: Get-Service workstation | Restart-Service -Force不太确定发生了什么事... - undefined

7

net use \\<host> /delete 是最快速且精准的方法(不会影响其他连接),但由于很多原因,这种方法并不总是有效。

@DaveInCaz 提供的 net stop workstation 方法在某些情况下也有帮助。

如果以上方法均无效,可以尝试重启 LanmanWorkstation 服务,您可以使用以下脚本:

@echo.
@echo Restarting
net stop LanmanWorkstation /y
@PING.EXE -n 2 0.0.0.0 >nul
net start LanmanWorkstation

注意事项:

  • 仅重启工作站服务(例如从services.msc控制台)不足以解决问题。
    该服务可能需要在短时间内停用。如果您要从脚本中执行此操作,则最好添加1秒的延迟。

  • 在某些情况下,net use \\<host> /delete无法正常工作,因为另一个程序仍在使用该共享资源,您可以查找并删除阻止的处理程序而不关闭它。使用Sysinternals Process Explorer,按Ctrl+F进行搜索,然后输入拥有此类共享资源的主机机器的名称。单击每个结果,程序窗口将跳转到已找到的程序的句柄。右键单击该句柄,然后选择Close Handle(关闭句柄)。 (或者只需关闭该程序,如果可以的话)这仅适用于通常存在阻止共享断开连接的程序的情况。而不是因为没有原因而被阻止的奇怪情况。

  • 提升的帐户有自己的环境。这会带来一些意外行为。
    如果您在提升的cmd/PS控制台中运行net use命令,则不会影响Windows Explorer用于访问共享的用户。
    反之亦然,如果您从共享中运行程序并且该程序请求并获得提升的访问权限,则该程序将失去与该共享及其可能需要运行的任何文件的连接。您需要从提升的cmd/PS中运行net use以创建一个提升的共享连接到该共享。

  • 从Windows Explorer的快速访问(左侧面板顶部)中删除最近的文件夹可能有助于解决某些问题。
    如果您要连接的主机根据用户提供不同级别的访问权限,并/或具有Guest用户(匿名)共享访问权限,则您可能经常遇到此类情况。
    当您使用用户名访问共享时,此类共享内的文件夹可能会被分配到快速访问面板中的最近项目。在重新启动后打开Windows Explorer时,将检查快速访问面板中的最近项目,并将建立与主机计算机的连接,以MUP的形式保持打开。如果您的共享接受授权和匿名连接,则仅打开Windows Explorer将创建匿名连接,当您单击需要授权的共享时,您将不会获得凭据对话框,而是会出错。


7

看起来重新启动Windows资源管理器服务就足够了:

  1. 打开任务管理器
  2. 找到Windows资源管理器进程
  3. 选择它,选择后,"重启"按钮将出现在右下角。
  4. 点击"重启"按钮。 Windows资源管理器将重新加载。

在我的情况下,这有所帮助。


我尝试过这个,但仍然无法重新建立连接。 - user1062589
谢谢。这对我很有帮助。这是我可以在没有管理权限的情况下完成的一项成功操作。 - Vitalij Roscinski
请原谅我的无知,尽管我这些年来用过很多次任务管理器,但我从未见过“重新启动”按钮,只有“结束任务”。 - Jerry Dodge

6
可能是Windows凭据管理器持有网络共享的凭据。
加载凭据管理器(最简单的方法可能只是在开始菜单中搜索),查看是否有您的网络共享的Windows凭据,然后尝试删除/更新它们。
参考链接:Credential Manager - Windows Credentials

1
最终这个问题已经解决了。 - Alireza Fattahi

2

如果你和我一样,打开了这个页面是因为你遇到了错误,并且这是搜索结果中的前几个

请确保你没有在Windows中打开共享文件夹

  1. 我试图运行一个批处理脚本将\\192.168.10.15\Shared映射到驱动器号
  2. 出现了错误
  3. 我运行了net use /delete \\192.168.10.15\Shared
  4. 再次运行批处理,出现相同的错误
  5. 搜索了该错误并找到了这个页面,但没什么用
  6. 我注意到之前我直接从“运行”中打开了\\192.168.10.15\Shared,并且它在一个窗口中打开了
  7. 关闭了窗口
  8. 再次尝试
  9. 成功了

0

我在Super User网站上为主题“使用不同的用户打开网络驱动器”(https://superuser.com/questions/577113/open-a-network-drive-with-different-user/1524707#1524707)给出了答案。

我想要将路由器的USB驱动器用作不同用户的网络存储,但是遇到了这个主题中的错误信息:

“同一用户对服务器或共享资源的多个连接,使用超过一个用户名是不允许的。请断开与服务器或共享资源的所有先前连接,然后重试。”

除了使用“NET USE”命令的方法外,我还从网页上找到了另一种方法。

http://backupchain.com/i/how-to-fix-error-1219-multiple-connections-to-a-server-or-shared-resource-by-the-same-user

通过编辑位于目录“C:\Windows\System32\Drivers\etc”下的hosts文件,可以更好地解决Windows连接限制问题。

例如,我的路由器IP地址是192.168.1.1,其USB驱动器有三个共享文件夹:\user1、\user2和\user3,分别为三个用户提供服务。然后我们可以在hosts文件中添加以下三行:

192.168.1.1 server1

192.168.1.1 server2

192.168.1.1 server3

在这个例子中,我们将server1映射到用户#1,将server2映射到用户#2,将server3映射到用户#3。

重启计算机后,在Windows文件资源管理器中,我们可以同时连接用户#1的\user1文件夹,用户#2的\user2文件夹和用户#3的\user3文件夹,即

如果我们在资源管理器的文件夹指示字段中键入路由器名称\\server1,它将在资源管理器右窗格中显示路由器USB驱动器的所有共享文件夹,并在资源管理器左窗格的“网络”项下显示server1,然后用户#1就可以访问共享文件夹\user1了。

此时,如果我们在资源管理器的目录指示字段中键入\\server2或\\server3,则可以将路由器的USB驱动器连接为server2或server3,并访问用户#2或用户#3的共享文件夹\user2或\user3,并同时保持“server1”连接。

使用此方法,我们还可以使用“NET USE”命令执行这些操作。


0
在Windows 10中,我使用Windows凭据管理器解决了这个问题。我发现了多个与我遇到问题的NAS设备相关的凭据。在删除了这些凭据之后,我能够正常访问NAS映射的网络驱动器了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接