Je ne peux pas obtenir le chemin UNC à partir du lecteur mappé. J'ai essayé d'utiliser WNetGetConnection, mais cela ne fonctionne pas pour moi. Il renvoie l'erreur 487. Est-ce que quelqu'un sait comment traiter cette erreur ou tout autre moyen d'obtenir le chemin UNC?Obtenir le chemin UNC pour le lecteur mappé VB.net
2
A
Répondre
1
Vous pouvez utiliser l'API WNetGetUniversalName
.
4
totalement aller avec P/suggestion Invoke de @ Alex K, je voulais juste poster une méthode hack de la tuyauterie dans la commande net use
:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim RemotePath = GetUncSourcePath("v"c)
If String.IsNullOrEmpty(RemotePath) Then
Trace.WriteLine("there was an error")
Else
Trace.WriteLine(RemotePath)
End If
Me.Close()
End Sub
Private Shared Function GetUncSourcePath(ByVal driveLetter As Char) As String
If String.IsNullOrEmpty(driveLetter) Then Throw New ArgumentNullException("driveLetter")
If (driveLetter < "a"c OrElse driveLetter > "z") AndAlso (driveLetter < "A"c OrElse driveLetter > "Z") Then Throw New ArgumentOutOfRangeException("driveLetter", "driveLetter must be a letter from A to Z")
Dim P As New Process()
With P.StartInfo
.FileName = "net"
.Arguments = String.Format("use {0}:", driveLetter)
.UseShellExecute = False
.RedirectStandardOutput = True
.CreateNoWindow = True
End With
P.Start()
Dim T = P.StandardOutput.ReadToEnd()
P.WaitForExit()
For Each Line In Split(T, vbNewLine)
If Line.StartsWith("Remote name") Then Return Line.Replace("Remote name", "").Trim()
Next
Return Nothing
End Function
0
Fonctionne bien pour moi et plus simple qu'un appel api comme sur http://vbnet.mvps.org/index.html?code/network/uncfrommappeddrive.htm La seule chose est que j'ai dû ajouter une ligne de code pour Dim la ligne Line.
Merci pour l'aide
+0
Bienvenue sur SO! Cette réponse semble mieux adaptée en tant que commentaire, plutôt que d'une réponse à la question ci-dessus. – Boeckm
ne fonctionne pas pour moi ... retourne toujours rien :( – Nitesh
@ rbsoft.sol, tomber à une ligne de commande et exécutez 'net use v:', remplaçant 'v:' avec Voyez-vous une ligne qui dit 'nom à distance'? –
@ Chris..No, je reçois" La connexion réseau n'a pas pu être trouvé ".. J'utilise net use c: – Nitesh