1

我使用以下代码在系统上布局网络驱动器。我想为持久性添加第三列,但在 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
4

2 回答 2

3

你可以一直在 WMI 中完成它而没有任何(好吧,更少)讨厌的结块。

例如

进口系统
进口系统管理

公共模块 modmain
   子主()
    Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_NetworkConnection WHERE LocalName = 'Z:'")
    将 obj 作为 ManagementObject 调暗
    对于 searcher.Get 中的每个 obj
        Console.WriteLine("{0} {1}", obj.Item("LocalName").ToString, obj.Item("Persistent"))
    下一个
   结束子
端模块

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

于 2009-10-18T22:11:36.547 回答
2

这可能会帮助你。它是一个枚举网络资源的C#类,具有区分持久连接的能力:

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

我很抱歉它是在 C# 中,但它做了一些我不知道如何在 VB 中做的事情,比如封送内存。

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

RESOURCE_REMEMBERED 

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

于 2009-10-18T21:41:14.700 回答