例如:服务器的名称:dbserver
              ip:192.168.0.3
      该服务器有权限控制
      访问服务器的用户名:user
                  密码:123456
      该用户可以读写服务器D:\share目录我想用vb程序里现实将本机的文件c:\file\file.txt复制到局域网内服务器D:\share目录下。
使用程序的用户并不知道访问服务器的用户名和密码,用户名和密码写在程序中。

解决方案 »

  1.   

    '服务器的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
      

  2.   

    shell "cmd /c net use \\servername  password /user:username",vbhideor API的方法
    ================
    把下面代码放到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")