我想在程序里 访问 服务器上共享文件夹里的  文件xxx.xls,
     通过路径名 "\\192.20.33.444\\shareFolder\xxx.xls",但是老另外冒出一个输入对话框,让输入 登陆名及密码(访问服务器是需要的)。。     想问,能否不要该对话框在程序里直接登陆上,或设置什么样的参数(把登陆名及密码做参数),或怎么解决可以?
     谢谢光顾!

解决方案 »

  1.   

    这样呀,
    不太好吧,
    我感觉还是使用网络传输比较安全,你可以使用winsock做成Server和Client呀
      

  2.   

    用net命令就可以。在filecopy之前加一句:Shell "cmd.exe /c net use ip地址 密码 /user:user名字", vbHide如ip是192.168.1.1,用户名是admin,密码是passwd,则该写为Shell "cmd.exe /c net use 192.168.1.1 passwd /user:admin", vbHide----------------------------
    这个问题我以前帮人家解决过,上面是方法,具体看http://expert.csdn.net/Expert/topic/3069/3069116.xml?temp=.6375238
      

  3.   

    liyan010(我是大坏蛋, 谢谢你,我想问,shell是变量,还是不用声明,是什么东东?
      

  4.   

    呵呵,看到你的短信息了;)
    Shell 是一个函数,不用声明,直接用就ok了。
    ——————————————————
    msdn解释如下:Shell 函数
          执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。语法Shell(pathname[,windowstyle])Shell 函数的语法含有下面这些命名参数:部分 描述 
    pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 
    Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。 
      

  5.   

    使用API函数:WNetUseConnection 
    网上有不少例子
      

  6.   

    你在啊,好
      Shell "cmd.exe /c net use 172.21.3.16 mypwd /user:myusername", vbHide
      fso.CopyFile .FileName, "\\172.21.3.16\ShareDic\" & .FileTitle, True
       我的代码,还是不行,拷贝不成(若先登陆上可成功),盼你指点迷津,谢_____________________________不能直接用Shell "cmd.exe /c net use 172.21.3.16 mypwd /user:myusername", vbHide的,应该把用户名密码写进去才行。不是说了么?如ip是192.168.1.1,用户名是admin,密码是passwd,则该写为Shell "cmd.exe /c net use 192.168.1.1 passwd /user:admin", vbHide
      

  7.   

    我就是那样写的啊, 我的密码是mypwd,名是myusername ,
    我的共享目录权限就一个,不是开机登陆那个人,只要知道登陆名密码的都可以访问,跟这有关么,
      

  8.   

    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 = &H1Private Const RESOURCETYPE_UNKNOWN = &HFFFF
    Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long Private Declare Function WNetDisconnectDialog Lib "mpr.dll" (ByVal hWnd As Long, ByVal dwType As Long) As Long Public Function DisconnectNetworkDialog() As Long
     DisconnectNetworkDialog = WNetDisconnectDialog(0&, RESOURCETYPE_DISK)
     End Function
    Private Sub Command2_Click() '第一种方法断开,有对话框
    Call DisconnectNetworkDialog
    End SubPrivate Sub Command3_Click() ' 第二种方法断开
    Call WNetCancelConnection2("\\192.20.33.444\\shareFolder\", 1, True)
    End SubPublic 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 FunctionPrivate Sub Command1_Click() '连接
    Call ConnectUserPassword("\\192.20.33.444\\shareFolder\", "", "用户名", "密码")
    End Sub
      

  9.   

    成功了!应该这样写:
    Shell "cmd.exe /c net use \\172.21.3.16\shareFolder  mypwd /user:myusername", vbHide
     
    有点遗憾,该语句有时首次执行过后,还是不认远程文件夹,第二次及以后就可了。
    还没搞懂原因谢谢: liyan010(我是大坏蛋; czw1975(塞饭) !
    揭贴!