Bonjour,
Je souhaiterais récupérer le chemin UNC d'un lecteur réseau mappé sur la machine.
Après plusieurs heures de recherche, je n'ai toujours pas trouvé comment le faire en Vb.net.
Quelqu'un aurait-il une solution ?
Merci.
Bonjour,
Je souhaiterais récupérer le chemin UNC d'un lecteur réseau mappé sur la machine.
Après plusieurs heures de recherche, je n'ai toujours pas trouvé comment le faire en Vb.net.
Quelqu'un aurait-il une solution ?
Merci.
L'info est dans la base de registre, dans HKEY_CURRENT_USER\Network\<lettre du lecteur>\RemotePath.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Shared Function GetNetworkPath(driveLetter As String) As String Using key = Registry.CurrentUser.OpenSubKey("Network\" & driveLetter) If key IsNot Nothing Then Return DirectCast(key.GetValue("RemotePath"), String) End If Return Nothing End Using End Function
Attention, la clé Network ne contient pas seulement les lecteurs réseau (ConnectionType = 1), mais aussi les imprimantes réseau (ConnectionType = 2)... j'ai déjà eu un gros bug dans mon appli à cause de ça
De plus, seul les lecteurs réseau "persistants" (configurés pour être reconnectés à l'ouverture de session) sont visibles dans la base de registre. Je ne sais pas trop comment récupérer les lecteurs temporaires...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Merci,
Je vais tester ça tout de suite.
Voilà une solution qui marche aussi avec les lecteurs réseau non persistants :
Par contre c'est très lent... du moins sur mon PC
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Shared Function GetNetworkPath(driveName As String) As String If Not driveName.EndsWith(":") Then driveName = driveName & ":" End If Dim query As String = String.Format("SELECT * FROM Win32_NetworkConnection WHERE LocalName = '{0}'", driveName) Using searcher = New ManagementObjectSearcher("root\CIMV2", query) For Each result As ManagementObject In searcher.Get() Return DirectCast(result("RemotePath"), String) Next End Using Return Nothing End Function
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager