Windows 7中的初始情况(在8.1和10中显然相同):

  • 创建持久(!)网络驱动器映射(a.k.a."Reconnect at logon") .

  • 现在物理断开网络文件夹(拔下电缆或关闭目标系统)

  • 再次注销 . 气球消息将告诉"Could not reconnect all network drives",但驱动器仍将在资源管理器中可见(带红叉) .

此时,我想通过应用程序中的代码删除该网络驱动器 .

为此,我使用WNetCancelConnection2(在任何其他情况下都可以正常工作),但是为了使您更容易重现,您也可以使用命令行 . 运行命令:

net use Z: /delete

(或者你用过的任何驱动器号) . 它会告诉你它已成功完成 . 运行“net use”将显示没有连接的网络驱动器 . 但是,在资源管理器中,驱动器仍在那里!现在右键单击它并选择断开连接将导致错误 . 要删除该驱动器,必须先注销然后重新启动,或者杀死explorer.exe并再次运行它 .

有趣的是,如果不是通过代码或命令行删除驱动器,而是在资源管理器中右键单击它并断开连接,它可以完美地工作!因此,右键单击选项与"net use"和提到的API调用有所不同 . 我真的很想知道它的作用 .

那么这里的问题是什么?以及如何解决?任何编程语言的任何解决方案都可以 . 提前致谢 .