Ich muss den UNC-Pfad vom zugeordneten Laufwerk abrufen. Ich habe versucht, WNetGetConnection zu verwenden, aber es funktioniert nicht für mich. Es gibt Fehler 487 zurück. Weiß jemand, wie man mit diesem Fehler umgeht oder wie man den UNC-Pfad abrufen kann?
Antworten
Zu viele Anzeigen?
Chris Haas
Punkte
50077
Völlig gehen mit @Alex K's P/Invoke Vorschlag, ich wollte nur eine Hack-Methode der Piping durch die Post net use
Befehl:
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
Alex K.
Punkte
165323
Sie können die WNetGetUniversalName
API.
ed v
Punkte
1
Funktioniert bei mir gut und ist einfacher als ein Api-Aufruf wie bei http://vbnet.mvps.org/index.html?code/network/uncfrommappeddrive.htm Das Einzige, was ich tun musste, war, eine Codezeile hinzuzufügen, um die Variable Line zu dimmen.
Danke für die Hilfe