2010-05-04 5 views
2

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

Répondre

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

ne fonctionne pas pour moi ... retourne toujours rien :( – Nitesh

+0

@ 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'? –

+0

@ Chris..No, je reçois" La connexion réseau n'a pas pu être trouvé ".. J'utilise net use c: – Nitesh

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