• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1297
  • Last Modified:

How to Programmatically map a ftp dirve or folder as local disk in vb.net

i want to map a ftp server folder as a local drive in mycomputer programmatically throught vb.net . i have seen a similar question but its answers refferd to a software (webdrive) but i want to do it programmatically in vb.net .
1 Solution
.NET does not provide a way to map drives. To do this you still needs to access the WinAPI or use the net Use command. I have created two functions which demonstrate simple mapping and disconnecting(unmapping) of network drives using VB.NET and the Win32API.

       Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _
( ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, _
ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer

       Public Declare Function WNetCancelConnection2 Lib "mpr" Alias "WNetCancelConnection2A" _
(ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Integer) As Integer

          <StructLayout(LayoutKind.Sequential)> _
      Public Structure NETRESOURCE
            Public dwScope As Integer
            Public dwType As Integer
            Public dwDisplayType As Integer
            Public dwUsage As Integer
            Public lpLocalName As String
            Public lpRemoteName As String
            Public lpComment As String
            Public lpProvider As String
          End Structure

      Public Const ForceDisconnect As Integer = 1
      Public Const RESOURCETYPE_DISK As Long = &H1

      Public Function MapDrive(ByVal DriveLetter As String, ByVal UNCPath As String) As Boolean
            Dim nr As NETRESOURCE
            Dim strUsername As String
            Dim strPassword As String

            nr = New NETRESOURCE
            nr.lpRemoteName = UNCPath
            nr.lpLocalName = DriveLetter & ":"
            strUsername = Nothing '(add parameters to pass this if necessary)
            strPassword = Nothing '(add parameters to pass this if necessary)
            nr.dwType = RESOURCETYPE_DISK

            Dim result As Integer
            result = WNetAddConnection2(nr, strPassword, strUsername, 0)

            If result = 0 Then
                Return True
                Return False
            End If
          End Function

      Public Function UnMapDrive(ByVal DriveLetter As String) As Boolean
          Dim rc As Integer
            rc = WNetCancelConnection2(DriveLetter & ":", 0, ForceDisconnect)

                 If rc = 0 Then
                Return True
                Return False
            End If

          End Function
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now