问题现象

开发背景

我开发这个工具,主要是为了解决使用 SMB 网络盘时遇到的一个问题:虚拟机已经关闭,Windows 中却还保留着无法访问的映射盘。此时打开文件资源管理器,可能长时间加载,甚至出现无响应,也就是通常所说的“网络盘断开后资源管理器卡死”。

NetDriveGuard 针对这一使用场景开发:确认配置目标不可达后,按设置取消失效映射,减少残留网络盘对文件资源管理器的干扰;目标恢复可用后,再尝试重建映射,保持原有盘符的使用方式。

本文所说的“断联残留”,是指共享地址对当前客户端已经不可达,但客户端仍保留网络驱动器的盘符和映射关系。服务器不一定已经关机,例如离开校园网、办公网络或断开 VPN 后,原来的内网地址也可能无法访问。

SMB 是文件共享协议;Samba 是 Linux / Unix 等系统上提供 SMB 服务的软件实现。本文中的“网络盘”,是指把共享地址(例如 \\server\share)映射成 Y: 等 Windows 盘符,不是网页网盘。Samba 官方介绍

我找到的类似问题

以上案例说明相似现象确有反馈,但不代表原因完全相同,也不足以认定 Windows 11 已全面解决该问题。“卡死”有时是长时间等待,具体原因仍需结合实际环境判断。

实现的功能

NetDriveGuard 在 Windows 系统托盘中运行,围绕一个指定的网络盘提供以下功能:

  • 离线取消映射:通过连续检查确认目标不可达后,按设置尝试取消失效映射,减少资源管理器继续访问不可用入口的机会。
  • 恢复后自动重连:目标共享恢复可用后,按设置尝试恢复原盘符映射。
  • 状态面板与通知:查看当前状态、最近检查和变化时间、错误及事件记录;重要变化通过托盘通知提醒。
  • 手动控制:支持立即检查、暂停和恢复监控。
  • 检测频率设置:提供标准、快速、节能和自定义模式。
  • 日常配置:支持登录 Windows 后自动启动、自定义配置和日志保存目录、直接打开数据文件夹,以及简体中文和 English 界面。
  • 诊断导出:导出脱敏诊断信息,辅助排查问题。

离线取消映射和自动重连可以分别开启,默认均关闭,只监控和提醒。离线确认过程中的单次临时内部错误保留在面板中,不重复弹出通知;持续出现的内部错误仍会提醒。

例如,将虚拟机共享映射为 Y: 并启用两项自动操作后:关闭虚拟机,工具确认目标不可达并尝试取消映射;重新启动虚拟机,等待共享恢复可用后,工具尝试重新连接 Y:

使用方法

  1. 在 Windows x64 系统上运行独立版本中的 NetDriveGuard.App.exe,无需另外安装 .NET。
  2. 打开设置,填写需要维护的盘符,例如 Y:,以及共享地址,例如 \\server\share
  3. 根据需要启用离线取消映射、自动重连。要自动处理断联残留,应启用离线取消映射;仅保存地址不会开启这两项操作。
  4. 选择检测模式并保存配置。日常使用可先采用标准模式。
  5. 双击托盘图标查看监控面板,通过当前状态和事件记录确认执行情况,也可以手动立即检查。

标准模式的常规服务器连接检查间隔为 5 秒。这不代表一定能在 5 秒内取消映射或完成重连:离线确认次数、连接超时和共享服务恢复时间都会影响实际耗时。

需要调整保存位置时,在高级设置中选择配置和日志目录,也可以直接打开该文件夹。界面语言同样在高级设置中选择,修改后需退出并重新运行程序。

关闭监控面板只会隐藏到托盘,不会停止监控;需要停止程序时,使用托盘菜单中的“退出”。“开机自启动”是在当前用户登录 Windows 后运行,不是在登录前运行。

注意事项

  • 先确认问题与目标映射有关。 工具适用于虚拟机、NAS 不持续在线,或校园网、办公网络、VPN 切换后指定共享不可达的场景。它不是通用的资源管理器修复工具,不修改 Windows 全局网络超时设置;其他网络位置、失效快捷方式或系统问题引起的卡顿不一定有效,已经阻塞的请求也不保证立即结束。
  • 取消映射不等于删除文件。 操作只断开本机盘符与共享地址的对应关系,不删除共享目录中的文件。工具不强制关闭正在使用的文件,文件占用可能导致取消映射失败。
  • 当前只维护一个目标。 不支持批量管理,不自动切换内网 IP 与公网 IP,也不会覆盖同一盘符上指向其他位置的映射。
  • 避免多个程序管理同一盘符。 使用前应停用负责同一映射的旧脚本或其他自动重连工具,避免互相干扰。
  • 妥善选择数据目录。 配置和日志应保存在本地目录,不使用被监控的网络盘。切换保存目录后,原目录中的文件会保留。
  • 共享凭据由系统保存。 需要独立账号连接共享时,密码由 Windows 凭据管理器保存,不写入普通配置文件。

当前版本

当前为预览版本,建议先在自己的共享环境中确认离线取消、恢复重连和通知行为符合预期,再用于日常运行。

  • 本文对应版本:NetDriveGuard 0.4.0-dev(r21 预览版)
  • 运行平台:Windows x64。
  • 运行方式:独立可执行程序,无需另外安装 .NET。