2009-10-18 20 views
1

J'utilise le code suivant pour mettre en page des lecteurs réseau sur un système. Je veux ajouter une troisième colonne pour la persistance mais dans vb.net je ne sais pas comment vérifier si un lecteur a une carte persistante ou non. Aucune suggestion?vb.net comment vérifier si un lecteur réseau est mappé de manière persistante

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 

Répondre

2

Vous auriez pu toujours le faire dans WMI sans aucun (pas moins bien) des cludges méchants.

par exemple.

 
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 

Il est évident que vous devez ajouter une référence à System.Management.dll et changer Z: pour le lecteur que vous vérifiez, ou vous pourriez probablement remplacer tout votre code avec juste cet extrait que la suppression de la clause WHERE retournera tous les lecteurs mappés.

+0

Cela fait ce que je cherche, merci. Cela me donne également l'option d'ajouter plus de données dans ma liste en utilisant la classe win32_NetworkConnection, que je suis en train de lire en ce moment. – MaQleod

2

Ceci pourrait vous aider. Il est une classe C# qui énumère les ressources du réseau, et a la capacité de distinguer les connexions persistantes:

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

Je me excuse qu'il est en C#, mais il fait des choses comme la mémoire marshaling que je ne sais pas comment faire en VB.

Les constantes sont transmises à la fonction EnumerateServers pour fournir un contrôle précis de la sortie. La constante vous trouveriez d'intérêt est la suivante:

RESOURCE_REMEMBERED 

ENUMERE connexions (souvenaient persistants).

+0

+1. Très bonne réponse. Cela va dans mes favoris. – David

Questions connexes