c++ builder建立網絡映射共享.doc_第1页
c++ builder建立網絡映射共享.doc_第2页
c++ builder建立網絡映射共享.doc_第3页
c++ builder建立網絡映射共享.doc_第4页
c++ builder建立網絡映射共享.doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c+ Builder中用WNetAddConnection2登陆局域网中服务器的问题在我们单位的局域网中有一个共享的数据服务器,在地址栏里面输入“hl2adas”可以直接进去,不需要用户名和密码,我现在在c+ Builder中想连接这个数据服务器,出了问题,不知道如何解决,请各位高手指点,谢谢。我的代码如下:void _fastcall TForm1:Button1Click(TObject *Sender) char lpMsgBuf200; TNetResource NRW; NRW.dwType=RESOURCETYPE_ANY; NRW.lpLocalName=z:; NRW.lpRemoteName=HL2ADAS ; NRW.lpComment=; NRW.lpProvider=; DWORD d; d=WNetAddConnection2(&NRW,CONNECT_UPDATE_PROFILE); if(d=NO_ERROR) ShowMessage(连接成功); else FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,lpMsgBuf,200,NULL); ShowMessage(lpMsgBuf); ShowMessage(连接失败,重新连接);C/C+ code 将网络路径映射为本地盘符DWORD ConnectRemoteDrive(LPSTR ShareName, LPSTR LocalDrive) NETRESOURCE nr; ZeroMemory(&nr, sizeof(nr); nr.dwScope = RESOURCE_GLOBALNET; nr.dwType = RESOURCETYPE_DISK; / RESOURCETYPE_ANY; nr.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC; nr.dwUsage = RESOURCEUSAGE_CONNECTABLE; nr.lpLocalName = LocalDrive; nr.lpRemoteName = ShareName; nr.lpComment = ; nr.lpProvider = NULL; return WNetAddConnection2(&nr, / NETRESOURCE from enumeration (LPSTR) NULL, / no password (LPSTR) NULL, / logged-in user CONNECT_UPDATE_PROFILE); / update profile with connect info/ ConnectRemoteDrive(HL2ADAS, Z:);大家在运用Delphi编写网络应用程序时可能会遇到这样一个问题:在一个由Windows NT和Novell Netware组成的网络环境中,应用程序需要使用Novell网上的某些数据,如果每次都手工在Windows资源管理器中映射,断开网络驱动器,不仅繁琐而且显得不够专业。本文将介绍在Delphi中使用Windows32 API函数解决这一问题。 一、 基本原理在Microsoft Windows环境下,应用程序使用Windows网络函数(WNet)来实现网络功能而不用关心网络的供应商及具体实现。因为WNet函数是独立于网络的。 Wnet函数主要有:WnetAddConnection , WnetAddConnection2 , WnetAddConnection3 , WnetCancelConnection2等。本文主要用WnetAddConnection2,WnetCancelConnection2函数,下面简单介绍一下,关于WNet函数更详细的资料请参考Delphi的连机文档和Microsoft API函数说。 WNetAddConnection2在Windows.pas中的函数原型如下: function WNetAddConnection2(var lpNetResource: TNetResource;lpPassword, lpUserName: PChar; dwFlags: DWORD): DWORD; stdcall;为调用此函数必须填写lpNetResouce结构,此结构的定义为:typedef struct _NETRESOUCE DWORD dwScope; DWORD dwType; DWORD dwDisplayType; DWORD dwUsage; LPTSTR lpLocalName; LPTSR lpRemoteName; LPTSr lpProvider; NETRESOURCE; 这里使用dwType,lpLocalName,lpRemoteName,lpProvider几个参数。其含义如下:dwType : 用于指定网络的资源类型,有以下RESOURCETYPE_ANY(任何资源) , RESOURCETYPE_DISK(磁盘资源) , RESOURCETYPE_PRINT(打印机资源)。lpLocalName : 指定本地设备。lpRemoteName : 指定远程网络名。lpProvider : 指定提供网络资源的供应商。如为空,则表示供应商未知。WNetAddConnection2函数的lpPassword为远程资源的口令。 lpUserName为远程资源的用户名。dwFlags标志位用于指定登录时是否重新连接(0时表示不重新连接,CCONNECT_UPDATE_PROFILE登录时重新连接)。WnetCancelConnection2在Windows.pas中的函数原型如下:function WNetCancelConnection2(lpName: PChar; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;lpName : 要断开的 掏缱试椿虮镜刂囟蚯鳌?dwFlags : 含义同上。fForce : True表示不管是否有文件打开,强制性断开网络驱动器;False 表示如有文 件打开则函数运行失败。二、实例在Delphi的File菜单下选择New Application,在Form1上放置一个Button,在Button1的Click事件中键入如下代码: procedure TForm1.Button1Click(Sender : TObject);var NetSource : TNetResource;begin with NetSource do begin dwType := RESOURCETYPE_ANY;lpLocalName := X:; / 将远程资源映射到此驱动器lpRemoteName := hqServersys; / 远程网络资源lpProvider := ; / 必须赋值,如为空则使用lpRemoteName的值。 end; WnetAddConnection2(NetSource, Password, Guest, /用户名为Guest,口令为PasswordCONNECT_UPDATE_PROFILE); /下次登录时重新连接/此时在Windows资源管理器中可看到网络驱动器X:if MessageDlg(Are you sure to disconnect Drive ?,mtConfirmation, mbYes, mbNo, 0) = mrYes then /不管是否有文件打开,断开网络驱动器X: WNetCancelConnection2( X:, CONNECT_UPDATE_PROFILE, True); end;end;本程序在Delphi3.0,4.0、PWindows95、Novell Netware 3.12下编译运行通过。- 建立网络驱动器的映射。 void CMountDlg:OnMountButton() / TODO: Add your control notification handler code herechar netpathMAX_PATH; /输入的网络路径m_NetpathEdit.GetWindowText(netpath, sizeof(netpath);char drvMAX_PATH; /本地的驱动器盘符m_DriveEdit.GetWindowText(drv, sizeof(drv);NETRESOURCE netres;netres.dwScope=RESOURCE_GLOBALNET;netres.dwType=RESOURCETYPE_ANY;netres.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC;netres.dwUsage=RESOURCEUSAGE_CONNECTABLE;netres.lpLocalName=drv;netres.lpRemoteName=netpath;netres.lpComment=NULL;netres.lpProvider=NULL;DWORD rslt=WNetAddConnection2(&netres, NULL, NULL, 0);CString str;str.Format(WNetAddConnection2()return code=%d, rslt);MessageBox(str);取消网络驱动器的映射void CMountDlg:OnUnmountButton() / TODO: Add your control notification handlercode herechar drvMAX_PATH; /本地的驱动器盘符m_DriveEdit.GetWindowText(drv, sizeof(drv);DWORD rslt=WNetCancelConnection2(drv, 0, FALSE);CString str;str.Format(WNetCancelConnection2() return code=%d,rslt);MessageBox(str); /显示信息成功与否 return code =0 成功 否则 建立失败网络映射命令 2010-01-05 09:30:44s1)空连接命令 1)建立空连接: net use IPipc$ /user: (一定要注意:这一行命令中包含了3个空格)2)建立非空连接: net use IPipc$ 用户名 /user:密码 (同样有3个空格)3)映射默认共享: net use z: IPc$ 密码 /user:用户名 (即可将对方的c盘映射为自己的z盘,其他盘类推) 如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net use z: IPc$4)删除一个ipc$连接 net use IPipc$ /del5)删除共享映射 net use c: /del 删除映射的c盘,其他盘类推 net use * /del 删除全部,会有提示要求按y确认 3 查看远程主机的共享资源(但看不到默认共享) net view IP4 查看本地主机的共享资源(可以看到本地的默认共享) net share5 得到远程主机的用户名列表 nbtstat -A IP6 得到本地主机的用户列表 net user7 查看远程主机的当前时间 net time IP8 显示本地主机当前服务 net start9 启动/关闭本地服务 net start 服务名 /y net stop 服务名 /y10 映射远程共享: net use z: IPbaby 此命令将共享名为baby的共享资源映射到z盘11 删除共享映射 net use c: /del 删除映射的c盘,其他盘类推 net use * /del /y删除全部12 向远程主机复制文件 copy 路径srv.exe IP共享目录名,如: copy ccbirds.exe *.*.*.*c 即将当前目录下的文件复制到对方c盘内13 远程添加计划任务 at ip 时间 程序名,如: at 127.0.0.0 11:00 love.exe 注意:时间尽量使用24小时制;在系统默认搜索路径(比如system32/)下不用加路径,否则必须加全路径 14 开启远程主机的telnet 这里要用到一个小程序:opentelnet.exe,各大下载站点都有,而且还需要满足四个要求:1)目标开启了ipc$共享 2)你要拥有管理员密码和帐号 3)目标开启RemoteRegistry服务,用户就该ntlm认证 4)对WIN2K/XP有效,NT未经测试 命令格式:OpenTelnet.exe server account psw NTLM认证方式 port 试例如下:c:OpenTelnet.exe *.*.*.* administrator 1 9015 激活用户/加入管理员组 1 net uesr account /active:yes 2 net localgroup administrators account /add16 关闭远程主机的telnet 同样需要一个小程序:ResumeTelnet.exe 命令格式:ResumeTelnet.exe server account psw 试例如下:c:ResumeTelnet.exe *.*.*.* administrator 17 删除一个已建立的ipc$连接 net use IPipc$ /del 教你用个at命令,你拷一个程序可以指定时间让其执行的 at computername time /interactive | /every:date,./next:date,. command比如:at 00:00 cmd /c copy C:Documents*.* C:MyDocs常见错误代码 错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限; 错误号51,Windows无法找到网络路径:网络有问题; 错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤); 错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$; 错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连; 错误号1326,未知的用户名或错误密码:原因很明显了; 错误号1792,试图登录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论