如何确定给定的UNC网络共享是否已映射到驱动器号

时间:2017-09-13 16:27:06

标签: vb.net network-programming

我有一个应用需要编写一个需要访问网络驱动器上的文件的脚本 - 称之为\ MyServer \ Share。运行脚本的程序无法处理UNC。在某些系统上,这个(\ MyServer \ Share)已经映射到其他系统上了。我当前的逻辑找到一个空驱动器并尝试映射到该驱动器,但失败并显示错误1219(不允许使用多个用户名,由同一用户与服务器或共享资源建立多个连接)。

如何检查共享(\ MyServer \ Share)是否已映射?

1 个答案:

答案 0 :(得分:1)

好的部分归功于Fadi的评论,该评论让我发现了一条略有不同的google路径,我找到了自己的方式answer 。这个答案旨在找到一个文件的UNC,所以我稍微修改了它。

这是我的代码:

Public Shared Function GetDriveUNC(ByVal sDrive As String) As String

If sDrive.IndexOf(":") Then
    Dim searcher As New ManagementObjectSearcher("SELECT RemoteName FROM win32_NetworkConnection WHERE LocalName = '" + sDrive.Substring(0, 2) + "'")
    For Each managementObject As ManagementObject In searcher.[Get]()
        Dim sRemoteName As String = TryCast(managementObject("RemoteName"), String)
        Return (New Uri(sRemoteName)).ToString()
    Next
    Return sDrive
    Else
        Return sDrive
    End If

End Function