vb.net如何检查网络驱动器是否持久映射

时间:2009-10-18 20:40:13

标签: vb.net mapped-drive persistent-connection

我使用以下代码来布局系统上的网络驱动器。我想为持久性添加第三列但是在vb.net中我不知道如何检查驱动器是否具有持久性映射。有什么建议吗?

For Each drive_info As DriveInfo In DriveInfo.GetDrives()
        If drive_info.DriveType().ToString = "Network" Then
            With maps.Items.Add(drive_info.Name)
                .SubItems.Add(drive_info.DriveType().ToString)
            End With
        End If
    Next drive_info

2 个答案:

答案 0 :(得分:3)

你总是可以在WMI中完成它而没有任何(好的更少)令人讨厌的cludges。

e.g。

Imports System
Imports System.Management

Public Module modmain
   Sub Main()
    Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_NetworkConnection WHERE LocalName = 'Z:'")
    Dim obj As ManagementObject
    For Each obj In searcher.Get
        Console.WriteLine("{0} {1}", obj.Item("LocalName").ToString, obj.Item("Persistent"))
    Next
   End Sub
End Module

显然,您需要添加对System.Management.dll的引用并将Z:更改为您正在检查的驱动器,或者您可能只用该代码段替换所有代码,因为删除WHERE子句将返回所有映射的驱动器。

答案 1 :(得分:2)

这可能会对你有所帮助。它是一个C#类,它枚举网络资源,并且能够区分持久连接:

http://www.codeproject.com/KB/cs/csenumnetworkresources.aspx?msg=964694

我很抱歉它是在C#中,但它做了一些事情,比如编组内存,我不知道怎么做VB。

将常量传递给EnumerateServers函数以提供对输出的精细控制。您会感兴趣的常数是:

RESOURCE_REMEMBERED 

枚举记住的(持久的)连接。