【问题标题】:how to disconnect a windows remote directory?如何断开Windows远程目录?
【发布时间】:2009-03-25 08:26:20
【问题描述】:

我正在编写一个程序来监控远程目录, 我使用 Windows API:WNetAddConnection。 我使用它来将远程目录映射到 Z: 通过使用指定的用户/密码。

我把这个程序放到工作环境后, 有人使用资源管理器位置“\192.168.X.X\somedir”登录我监控的同一目录, 它使我的程序无法连接到该目录, 所以我必须要求这些人不要做这件事,但我不能强迫他们不要做。

所以我想知道是否有办法断开所有其他连接, 或证明他们做这件事, 有人知道怎么做吗?

顺便说一句,我不是windows专家, 我不知道 windows 网络的细节(或者这个 bug 的真正含义), 谁能告诉我 windows 网络的文档在哪里?

【问题讨论】:

  • 我不知道为什么,当人们使用资源管理器并放置 location:"\192.168.X.X\somedir" 并使用他们的 user/pwd 时,我的程序将无法连接相同的共享目录。 .
  • 这是微软的限制。访问一台 Windows 服务器上的共享的 Windows 客户端必须对其访问的所有共享使用相同的用户名和密码。

标签: windows networking smb


【解决方案1】:

丑陋的选择:

您可以解析“net use”的输出,然后使用“net use /d”断开您不喜欢的连接

(WNetCancelConnection2好像是net use /d使用的API)

【讨论】:

    【解决方案2】:
    WNetCancelConnection2
    

    但这并不是对人最友好的事情。

    【讨论】:

    • 我们正在开发一个只在我们工厂使用的程序,用户是工人......
    【解决方案3】:

    不确定 API,但 net session /delete 会将所有打开的会话断开到共享。

    【讨论】:

      【解决方案4】:

      您可以按照以下步骤执行此操作: 1、运行命令删除所有网络用户和密码,命令为: rundll32.exe shell32.dll,Control_RunDLL keymgr.dll 2、删除内存中所有网络用户的信息使用顺序: net use * /delete /y 或者您可以使用以下信息创建一个 bat 文件:

      @echo off
      rundll32.exe shell32.dll,Control_RunDLL keymgr.dll
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      
      net use
      net use
      net use
      
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      net use * /delete /y
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 2012-03-26
        • 1970-01-01
        • 2011-01-10
        • 2017-08-26
        • 2016-06-05
        • 1970-01-01
        相关资源
        最近更新 更多