1

次のコードを使用して、システム上のネットワークドライブをレイアウトします。永続性のために3番目の列を追加したいのですが、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でいつでもそれを行うことができたはずです。

例えば

輸入システム
System.Managementをインポートします

パブリックモジュールmodmain
   サブメイン()
    Dim searcher As New ManagementObjectSearcher( "SELECT * FROM Win32_NetworkConnection WHERE LocalName ='Z:'")
    Dim obj As 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 に答える