例如:服务器的名称:dbserver
ip:192.168.0.3
该服务器有权限控制
访问服务器的用户名:user
密码:123456
该用户可以读写服务器D:\share目录我想用vb程序里现实将本机的文件c:\file\file.txt复制到局域网内服务器D:\share目录下。
使用程序的用户并不知道访问服务器的用户名和密码,用户名和密码写在程序中。
ip:192.168.0.3
该服务器有权限控制
访问服务器的用户名:user
密码:123456
该用户可以读写服务器D:\share目录我想用vb程序里现实将本机的文件c:\file\file.txt复制到局域网内服务器D:\share目录下。
使用程序的用户并不知道访问服务器的用户名和密码,用户名和密码写在程序中。
然后将这个目录映射到本地.代码如下:
bas:
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
Public Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias _
"WNetCancelConnection2A" (ByVal lpName As String, _
ByVal dwFlags As Long, ByVal fForce As Long) As LongPublic 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
'错误常量
Public Const ERROR_ACCESS_DENIED = 5&
Public Const ERROR_ALREADY_ASSIGNED = 85&
Public Const ERROR_BAD_DEV_TYPE = 66&
Public Const ERROR_BAD_DEVICE = 1200&
Public Const ERROR_BAD_NET_NAME = 67&
Public Const ERROR_BAD_PROFILE = 1206&
Public Const ERROR_BAD_PROVIDER = 1204&
Public Const ERROR_BUSY = 170&
Public Const ERROR_CANCELLED = 1223&
Public Const ERROR_CANNOT_OPEN_PROFILE = 1205&
Public Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202&
Public Const ERROR_EXTENDED_ERROR = 1208&
Public Const ERROR_INVALID_PASSWORD = 86&
Public Const ERROR_NO_NET_OR_BAD_PATH = 1203&
'网络驱动器映射
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 LocalNetDrive As String'连接到网络驱动器
Public Function NetDriveConnect(ByVal RemotePath As String, ByVal Localpath As String, ByVal lpUserName As String, ByVal lpPassword As String) As Boolean
NetDriveConnect = False
Dim NetR As NETRESOURCE
Dim ErrInfo As Long
On Error GoTo Error_NetDriveConnect
NetR.dwScope = RESOURCE_GLOBALNET
NetR.dwType = RESOURCETYPE_DISK
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
NetR.lpLocalName = Localpath
LocalNetDrive = Localpath
NetR.lpRemoteName = RemotePath
ErrInfo = WNetAddConnection2(NetR, lpPassword, lpUserName, CONNECT_UPDATE_PROFILE) '用户名和密码
If ErrInfo = NO_ERROR Then NetDriveConnect = True
Exit Function
Error_NetDriveConnect:
NetDriveConnect = False
End Function
'断开网络驱动器
Public Function NetDriveDisconnect(ByVal LocalNetDrive As String) As Boolean NetDriveDisconnect = False
Dim ErrInfo As Long
On Error GoTo Error_NetDriveDisconnect
ErrInfo = WNetCancelConnection2(LocalNetDrive, CONNECT_UPDATE_PROFILE, False)
If ErrInfo = NO_ERROR Then NetDriveDisconnect = True
Exit Function
Error_NetDriveDisconnect:
NetDriveDisconnect = False
End FunctionForm1:
Private Sub Command1_Click()
If NetDriveConnect("\\MyComputer\ShareFolder", "Z:", 用户名, 密码) = True MsgBox "Net Connection Successful!", vbInformation, "Share Connected"
'使用具有足够权限的用户名和密码登陆进你的计算机
End SubPrivate Sub Command2_Click() If NetDriveDisconnect(LocalNetDrive) = True Then MsgBox "Net Disconnection Successful!", vbInformation, "Share Disconnected"
End Sub
================
把下面代码放到module中
Option Explicit
Const WN_Success = &H0
Const WN_Not_Supported = &H1
Const WN_Net_Error = &H2
Const WN_Bad_Pointer = &H4
Const WN_Bad_NetName = &H32
Const WN_Bad_Password = &H6
Const WN_Bad_Localname = &H33
Const WN_Access_Denied = &H7
Const WN_Out_Of_Memory = &HB
Const WN_Already_Connected = &H34
Public ErrorNum As Long
Public ErrorMsg As String
Public rc As Long
Private Const ERROR_NO_CONNECTION = 8
Private Const ERROR_NO_DISCONNECT = 9
Private 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
Private 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
Const NO_ERROR = 0
Const CONNECT_UPDATE_PROFILE = &H1
Const RESOURCETYPE_DISK = &H1
Const RESOURCETYPE_PRINT = &H2
Const RESOURCETYPE_ANY = &H0
Const RESOURCE_GLOBALNET = &H2
Const RESOURCEDISPLAYTYPE_SHARE = &H3
Const RESOURCEUSAGE_CONNECTABLE = &H1 Public Function ConnectUserPassword(sDrive As String, sService As String, Optional sUser As String = "", Optional sPassword As String = "") As Boolean
Dim NETR As NETRESOURCE
Dim errInfo As Long
With NETR
.dwScope = RESOURCE_GLOBALNET
.dwType = RESOURCETYPE_DISK
.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
.dwUsage = RESOURCEUSAGE_CONNECTABLE
.lpRemoteName = sDrive
.lpLocalName = sService
End With
errInfo = WNetAddConnection2(NETR, sPassword, sUser, CONNECT_UPDATE_PROFILE)
ConnectUserPassword = errInfo = NO_ERROR
End Function
使用时 调用ConnectUserPassword即可
call ConnectUserPassword("\\servername", "", "password", "username")