我想在程序里 访问 服务器上共享文件夹里的 文件xxx.xls,
通过路径名 "\\192.20.33.444\\shareFolder\xxx.xls",但是老另外冒出一个输入对话框,让输入 登陆名及密码(访问服务器是需要的)。。 想问,能否不要该对话框在程序里直接登陆上,或设置什么样的参数(把登陆名及密码做参数),或怎么解决可以?
谢谢光顾!
通过路径名 "\\192.20.33.444\\shareFolder\xxx.xls",但是老另外冒出一个输入对话框,让输入 登陆名及密码(访问服务器是需要的)。。 想问,能否不要该对话框在程序里直接登陆上,或设置什么样的参数(把登陆名及密码做参数),或怎么解决可以?
谢谢光顾!
不太好吧,
我感觉还是使用网络传输比较安全,你可以使用winsock做成Server和Client呀
这个问题我以前帮人家解决过,上面是方法,具体看http://expert.csdn.net/Expert/topic/3069/3069116.xml?temp=.6375238
Shell 是一个函数,不用声明,直接用就ok了。
——————————————————
msdn解释如下:Shell 函数
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。语法Shell(pathname[,windowstyle])Shell 函数的语法含有下面这些命名参数:部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
网上有不少例子
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
我的共享目录权限就一个,不是开机登陆那个人,只要知道登陆名密码的都可以访问,跟这有关么,
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
Shell "cmd.exe /c net use \\172.21.3.16\shareFolder mypwd /user:myusername", vbHide
有点遗憾,该语句有时首次执行过后,还是不认远程文件夹,第二次及以后就可了。
还没搞懂原因谢谢: liyan010(我是大坏蛋; czw1975(塞饭) !
揭贴!