请教各位DX,在VB里实现跨机访问另一台机器上某个共享目录里的文件,如何验证

SmilingEva 2003-08-13 10:12:14
在VB里实现跨机访问另一台机器上某个共享目录里的文件,如何实现验证的问题

在打开文件的时候就像windows里的一样,弹出系统对话框要求输入网络密码,或者可以不用用户输,直接写在程序里,可怎么写呢???

现在我的运行情况就是,如果我连接过那台机器做了输了网络密码后,打开文件正常,如果没有,则报错,打开文件失败,该怎么解决呢???

拜托各位,困扰我好几天了,50分相送
...全文
15 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjkhy799110 2004-03-09
  • 打赏
  • 举报
回复
把下面代码放到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


================
call ConnectUserPassword("\\servername", "", "password", "username")

相当于 net use \\servername password /user:username
返回值代表连接成功或失败!
连接成功后即可正常访问了!
沐NeMo 2004-01-05
  • 打赏
  • 举报
回复
直接用:
Shell("net use \\机器名 密码 /user:用户名")
就可以了,然后就可以用:\\机器名\目录\文件名
来引用文件了。
沐NeMo 2004-01-05
  • 打赏
  • 举报
回复
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。

在Macintosh中,vbNormalFocus、vbMinimizedFocus和vbMaximizedFocus都将应用程序置于前台;vbHide、vbNoFocus、vbMinimizeFocus都将应用程序置于后台。

注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
沐NeMo 2004-01-05
  • 打赏
  • 举报
回复
up:...........:
我也想要的
局域网中的机子有98、2K、XP操作系统,如果要访问局域网内的另一台机子里的一个文件。进入时要有用户名和密码。比如2K访问2K时就要求要输入用户名和密码。vb中怎样写代码呢?有例子吗?
Wat5 2004-01-05
  • 打赏
  • 举报
回复
一个土办法,先shell一下Net use

lngRet = Shell("net use \\机器名 密码 /user:用户名", vbHide)
LiSDN 2004-01-05
  • 打赏
  • 举报
回复
up

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧