Get UNC Path for Mapped Drive VB.net

回眸只為那壹抹淺笑 提交于 2020-01-02 10:29:10

问题


I neet to get UNC path from mapped drive. I tried to use WNetGetConnection, but it doesn't work for me. It returns error 487. Does anybody know how to deal with this error or any other way to get the UNC path?


回答1:


Totally go with @Alex K's P/Invoke suggestion, I just wanted to post a hack method of piping through the net use command:

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



回答2:


You can use the WNetGetUniversalName API.




回答3:


Works good for me and simpler than an api call like on http://vbnet.mvps.org/index.html?code/network/uncfrommappeddrive.htm The only thing is I had to add a line of code to Dim the variable Line.

Thanks for the help



来源:https://stackoverflow.com/questions/2765015/get-unc-path-for-mapped-drive-vb-net

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!