断开/注销 Windows 网络共享而无需重新启动工作站服务

断开/注销 Windows 网络共享而无需重新启动工作站服务

我有一个正在运行的文件服务器 (SMB),我通过直接访问 \\1.2.3.4 在 Explorer (Windows 7 Professional) 中连接到它。我以一个用户身份登录,没有保存凭据,现在想注销(实际上我想更改为其他用户,但一般来说能够注销会很有用)。

我四处寻找方法来实现这一点,并发现一堆信息建议使用某种形式net use \\1.2.3.4 /del

但是,这些对我来说似乎都不起作用。我运行net use * /del,然后使用net use它来验证列表是否为空,但共享仍然神秘地保留在资源管理器中,不受影响、可访问,并且仍然使用以前的登录名。

我尝试过的另一件事,也失败了,例如net use \\1.2.3.4 /user:newusername切换凭证。然而,即使net use显示空的连接列表,这仍然会产生一个错误,指出不允许不同用户对同一资源建立多个连接——为什么有些连接没有出现在net use列表中,对我来说是个谜。

然后我发现了这篇文章如何从共享文件夹注销(microsoft.com),建议:

  1. net use * /del(或任何服务器)。
  2. 从凭证管理器中清除凭证。
  3. 重新启动工作站服务。

这个过程对我来说很有效。由于我没有保存凭据,因此凭据管理器中没有任何有趣的东西,但是清除连接后重新启动工作站服务net是关键(我确实必须关闭所有资源管理器窗口才能重新启动服务)。

我的问题是:这根本就不方便,尤其是当我必须向不太懂技术的用户解释时。虽然我当然可以创建一个批处理脚本来自动化整个过程,但有没有一种实际、正确、一致的方式来做到这一点,而不涉及重新启动服务(可能不涉及命令行,尽管我个人不介意)?

另外,还有一个子问题:我觉得很奇怪,我找到的关于这个问题的绝大多数资源都没有建议重新启动 Workstation,而建议的net use单独使用过程似乎至少对那些在这些帖子上发表评论的其他人有效。Workstation 重新启动是否只针对我,并表明我的机器存在其他问题,还是由于某种原因,它只是被排除在所有说明之外?只有 microsoft.com 支持帖子有推荐此步骤的说明,这最终让我成功了。

退出共享似乎是一个足够常见的用例,可以证明一些简单的方法可以做到这一点,所以我对弄清楚这一点的难度感到困惑。


我尝试过但没有效果的其他方法:

  • 在使用命令之前和之后关闭所有资源管理器窗口net use(如Kody Browns 的回答),以及摆弄“每个文件夹窗口单独的进程”设置,希望它是某种每个进程的凭据缓存(也受到该答案的启发)。
  • 更改家庭组连接管理设置(建议holmzi_online在上述 microsoft.com 帖子中的回答)。
  • 终止所有 explorer 进程(包括主进程)并重新启动 explorer net use * /del(建议罗伯特·格里尔,尽管该问题与映射驱动器有关)。

答案1

开始->控制面板->用户帐户和家庭安全->用户帐户->管理您的凭据。

展开其中一个“Windows 凭据”,然后单击“从保管库中删除”。

开始 -> 控制面板

控制面板 -> 用户帐户和家庭安全

用户帐户和家庭安全 -> 用户帐户

用户帐户 -> 管理您的凭证

登出

是的

答案2

我通过执行以下操作使其工作:

  1. 跑步net use * /delete
  2. 清除凭据(例如我的是172.26.190.129,创建日期是今天,就这样)
  3. 禁用“本地连接”(控制面板\网络和 Internet\网络连接\本地连接)
  4. 稍等一下(我不知道为什么,但我认为它可能会破坏从我的 Win7 到 Ubuntu 的一些链接,并可能会清除一些缓存)
  5. 启用“本地连接”并且它起作用了..

答案3

这不是答案,但评论太长了:

我遇到了这种情况。对我来说,本地计算机是 Windows 10 21H2,远程计算机是 Windows 7。

可能存在特殊情况:远程计算机的“高级共享设置”-“公共文件夹共享”处于开启状态。这意味着,我第一次访问\\COMPUTERNAME它时以“访客”身份登录。没有用户名/密码提示。

我知道我是客人,因为我在远程计算机上的本地计算机上创建了一个文件c:\users\public\public documents\(可以以客人身份访问),然后使用属性 - 安全 - 高级 - 所有者检查了该文件的所有者。 (请注意,客人帐户在用户帐户 - 管理帐户中显示为关闭。但我猜它对于网络登录仍然有效。)

因此,如果我首先尝试访问受保护的资源,我可能会被迫提供用户名密码,然后我可能不会注意到这个问题。

注意,我可以确认凭证管理器中也没有列出缓存的凭证。但是,互联网上的其他人有,删除这些凭证可以为他们解决问题(例如:https://serverfault.com/questions/911503/how-to-log-out-from-network-path)。我不知道是不是因为我以访客身份登录。所以没有真的凭证。但话又说回来,一个凭证已经足够了,我不能再使用另一个了。但这与 OP 第一次明确登录的情况不同(除非他以某种方式仍然是否以访客身份登录?在这种情况下,您尝试远程访问的第一件事的访问要求可能会在这里发挥作用。)

我尝试了所有这些,但都没有用,都显示“无法找到网络连接”:

net use \\COMPUTERNAME /delete
net use \\COMPUTERNAME\IPC$ /delete
net use \\COMPUTERNAME\ADMIN$ /delete
net use * /delete

还有一点:在本地计算机上,我使用 Process Explorer 在所有进程中搜索字符串,并搜索远程计算机名称。它为该服务生成了一个打开的文件句柄svchostWorkstation不幸的是,通过 procexp 强制关闭该句柄没有帮助。

但我相信这加强了人们的怀疑:该Workstation服务正在以无法访问的方式缓存这些凭据。

因此对我来说,重新启动Workstation(aka LanmanWorkstation)服务可以解决此问题。(注意:您实际上无法在 powershell 中执行此操作,至少在 v5.1 中是这样。因为它Workstation有依赖服务。您必须提取这些服务,找出正在运行的服务,停止它们,存储该列表,重新启动LanmanWorkstation -force(我认为这会导致依赖服务非正常死亡),然后重新启动以前运行的依赖服务。哦,对所有依赖项的依赖项执行此操作,依此类推。但是,services.msc这一切都为您完成了。对我来说,唯一services.msc重新启动的依赖服务是Computer Browseraka browser

答案4

按照以下说明操作解决 Windows 错误 1219Altaro.com 上的下载对我很有用。特别是,下载进程探索器,选择Find/Find Handle or DLL,然后搜索我的服务器的名称,结果显示打开一个带有服务器快速链接的 Windows 资源管理器窗口会立即重新建立与服务器的连接,从而net use \\server失败并出现错误 1219。当 Process Explorer 没有显示活动句柄时,net use \\server则会成功。

相关内容