본문 바로가기
데스크탑/비주얼 베이직 6

[API]Network drive 연결하기

by 브래드.권 2009. 1. 16.


선언)

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


NETRESOURCE 구조체 선언)

Public Type NETRESOURCE
       dwScope As Long
       dwType As Long
       dwDisplayType As Long
       dwUsage As Long
       lpLocalName As String
       lpRemoteName As String
       lpComment As String
       lpProvider As String
End Type



미리 정의된 상수들 선언)

Public Const NO_ERROR = 0
Public Const CONNECT_UPDATE_PROFILE = &H1
Public Const RESOURCETYPE_DISK = &H1
Public Const RESOURCETYPE_PRINT = &H2
Public Const RESOURCETYPE_ANY = &H0
Public Const RESOURCE_CONNECTED = &H1
Public Const RESOURCE_REMEMBERED = &H3
Public Const RESOURCE_GLOBALNET = &H2
Public Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
Public Const RESOURCEDISPLAYTYPE_GENERIC = &H0
Public Const RESOURCEDISPLAYTYPE_SERVER = &H2
Public Const RESOURCEDISPLAYTYPE_SHARE = &H3
Public Const RESOURCEUSAGE_CONNECTABLE = &H1
Public Const RESOURCEUSAGE_CONTAINER = &H2


설명)
윈도우 95 이상에서 사용할 수 있습니다.
네트워크 드라이브를 동적으로 연결할 때 사용하는 API입니다. 파라미터에 대한 설명은 다음과 같습니다.

lpNetResource : 네트워크 커넥션에 관련된 정보이며, NETRESOURCE 라고 정의된 위에 선언된 구조체를 사용하여 넘겨줘야 합니다.


lpPassword : 커넥션에 사용될 암호이며, null 이면 user name의 현재 기본 암호를 이용하며 빈 문자열일 경우 암호를 사용하지 않습니다.


lpUserName : 커넥션에 사용될 계정이며, null 이면 현재 기본 사용자를 이용하고 빈 문자열일 경우 사용하지 않습니다.


dwFlags :
CONNECT_UPDATE_PROFILE
이 설정이 되있으면, 이렇게 연결된 네트워크 드라이브는 지속적인 것으로 표시되어 윈도우를 다시 로긴할 때 윈도우가 자동으로 연결을 복구합니다.

리턴값 :
NO_ERROR 0인 값으로 함수가 성공적으로 수행되었으면 돌려주는 값입니다.

예제)

    Dim NetInfo As NETRESOURCE
    Dim ReturnValie As Long

   
    remote_Drv = "W:"
    remote_Path = "\\test"
    Identy.account = ""
    Identy.passwd = ""
    
    NetInfo.dwScope = RESOURCE_GLOBALNET
    NetInfo.dwType = RESOURCETYPE_DISK
    NetInfo.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
    NetInfo.dwUsage = RESOURCEUSAGE_CONNECTABLE
    NetInfo.lpLocalName = remote_Drv
    NetInfo.lpRemoteName = remote_Path
    NetInfo.lpComment = ""
    
    ReturnValue = WNetAddConnection2(NetInfo, Identy.passwd, Identy.account, CONNECT_UPDATE_PROFILE)
   
    If ReturnValue <> NO_ERROR Then
        MsgBox "Making network drive is failed..", vbOKOnly
    End If