首页 远程控制程序的一种编制方法及实现

远程控制程序的一种编制方法及实现

举报
开通vip

远程控制程序的一种编制方法及实现 远程控制程序的一种编制方法及实现 西安电子科技大学电子工程学院 刘逸 摘要 艾 介 r远张控圳 的 一种编 疗法熳具体的代码蛮观。使ff{的丌发环境足Mic T 0 soft\ isual C++ 6.0, 水吁采用M『|1C的构架,ⅢH寸,也使用 r SDK开发 ‘ 台的 一些技 术, 地办 接 酬川Wil】32APl函数。所以,文章介绍的办法具{丁MFC程序编写简 的特 点,⋯【IlJ‘义1 钉S【)K程 的 活1生。 关键词 远程控制, 计刈端 ,做 制 随着计算机网络技术的飞速发展,...

远程控制程序的一种编制方法及实现
远程控制程序的一种编制方法及实现 西安电子科技大学电子工程学院 刘逸 摘要 艾 介 r远张控圳 的 一种编 疗法熳具体的代码蛮观。使ff{的丌发环境足Mic T 0 soft\ isual C++ 6.0, 水吁采用M『|1C的构架,ⅢH寸,也使用 r SDK开发 ‘ 台的 一些技 术, 地办 接 酬川Wil】32APl函数。所以,文章介绍的办法具{丁MFC程序编写简 的特 点,⋯【IlJ‘义1 钉S【)K程 的 活1生。 关键词 远程控制, 计刈端 ,做 制 随着计算机网络技术的飞速发展,人们对各种各样的网络应用程序的需求也越来越大,远程 控制程序就是其中的一种。简单地讲,远程控制程序能够使人们通过网络实现一台计算机对另 一 台计算机地某种程度的控制。例如:远程关闭被控制计算机。 本文介绍的远程控制程序运行于Windows操作系统下 。对于Windows平台,微软公司研制了许 多出色的网络编程技术。主要有以下几种: ●Net Bl0S技术 ●重定向器 ●邮槽 ●命名管道 ●Winsock ●客户端远程访问服务器 (RAS) 这些网络编程技术都有各 自的使用范围,本文介绍的远程控制程序是基于Winsock技术的。 所以,下面简单介绍一下 Winsock网络编程技术。 套接字 (socket)是一种网络编程接 口,它是对通信端点的一种抽象,提供了一种发送和接 受数据的 机制 综治信访维稳工作机制反恐怖工作机制企业员工晋升机制公司员工晋升机制员工晋升机制图 。Winsock技术就是微软公司对套接字编程接 口的具体实现。 Winsock支持两种套接字,它们是数据报套接字 (Datagram Socket)和流式套接字 (Stream Socket),这两种套接字所传送的数据类型不同,因而其使用方法和相应的程序设计模型也 不同。本文中的远程控制程序采用流式套接字。 流式套接字可以将数据按顺序无重复地发送到 目的地,它提供地是一种可靠地面向连接的数 据传输方式。流式套接字使用传输控制协议 (TCP)。 Windows平台下的Winsock网络编程有两种实现方法。第一种方法是直接采用 Win32API 的一组套接字函数。这种方法具有控制灵活的特点,但是不易于编程。因此,微软公司在这组 API函数的基础上提供了两个类 CAsyncSocket和 CSocket。这两个 MFC的类在不同程度上对 前述的API函数进行了封装。本文介绍的远程控制程序就是建立在CSocket类的通信基础之上。 一 个远程控制程序应有两个模块来组成,一个是控制端,一个是被控端。被控端运行于被控 POP Style — — 40 维普资讯 http://www.cqvip.com 瓣 电子科技 制的计算机上,控制端运行于控制着的计算机上。 被控端模块负责接收控制端发送的命令,并对它进行解析 ,然后执行一定的操作。并将执行 的结果发送至控制端。采用这种方式,控制端即可对被控端计算机进行某种程度的控制。 本文介绍的远程控制程序实现的控制功能大致如下: ●文本消息发送——被控端接受到的控制端发送的文本消息后 ,把它显示在屏幕上。 ●命令行发送——被控端接受到控制端发送的命令行后,把它当作可执行命令加以执行。 ●系统信息控制——控制端可以读取并修改被控端的各类系统信息。 ●资源信息控制——控制端可以读取并修改被控端的各类资源信息,如:驱动器、目录、文 件 。 ●进程控制——控制端可以读取并终止被控端计算机上正在运行的进程。 ●关闭计算机——控制端可以远程关闭或是重新启动被控端计算机。 上面所有这些功能的实现,都是建立在CSocket类的通信层基础之上的。所以首先介绍一下 CSocket类如何建立通信层 ,然后再说明各部分功能的实现方法。 使用 CSocket类的最大好处在于它允许用户再连接两端通过 CArchive对象来进行数据的 传输。在使用 CArchive类之前,必须创建一个特殊 的基于 CSocketFile类的文件对象。 CSocketFile是从CFile类派生出来的,它通常和CSocket类一起使用,主要功能是帮助数据的 传输。 下面给出在控制端实现的通信层的例子代码 : CSocket mySocket;//CSocket对象 CSocketFile}pMyFile;//CSocketFile对象指针 CArchive*pArchiveln: CArchive*pArchiveOut: mySocket.Create();//创建套接字 mySocket.Connect(”192.168.0.61”,8000);//建立连接 //创建 CSocketFile对象并传递 CSocket对象指针 pMyFile=new CSocketFile(&mySocket,TRUE); //创建相应的 CArchive对象 pArchiveln=new Archive(pMyFfle,CArchive::load); pArchiveOut=new Archive(pMyFile,CArchive::store); 上述代码演示的是控制端的通信层,在被控端,套接字创建之后,调用Listen()函数来进行 端口侦听并接受控制端的连接。代码如下所示: CSocket mySocket;//CSocket对象 CSocketFile}pMyFile;//CSocketFi1e对象指针 CArchive*pArchiveln; CArchive*pArchiveOut: mySocket.Create(8000);//创建套接字 mySocket.Listen();//侦听并接受连接 //创建 CSocketFfle对象并传递 CSocket对象指针 pMyFile=new CSocketFile(&mySocket,TRUE); POP Style — — 41 维普资讯 http://www.cqvip.com //创建相应的 CArchive对象 pArchiveIn=new Archive(pMyFile,CArchive::load); pArchiveOut=new Archive(pMyFile,CArchive::store); 如果要进行数据的实际传输 ,则需要从 CObject类派生一个支持序列化的类 ,然后把需要传输 的变量类型以这个类的成员变量的形式来定义。之后,就可以在这个类种使用重载操作符<<和 >>来进行接收和发送数据。 (1)文本消息发送 控制端可以向被控端发送文本消息,这个功能实现起来最简单。把控制端用户通过对话框输 入的文本字符串保存在CString类型的变量里,然后通过 CSocket类建立建立起来的通信层发送 至被控端即可,被控端接受到数据后,以文本消息框的形式显示出来。 (2)命令行发送 这个功能的实现与文本消息的发送类似,所不同的是,被控端接受到命令行后,直接调用Wi n32 API函数 Shell Execute(),并把命令行作为它的参数。这样,只要用户在控制端输入的 命令及路径正确 ,被控端就会运行相应的进程。 (3)系统信息控制 为了简单起见,这里只介绍如何读取被控端的各类系统信息。被控端在接受到控制端的请求 后,分别调用下列函数读取系统信息,并将结果返回给控制端。 ●计算机名——使用Get Compu~r Name()函数获取被控端计算机名。 ●当前用户名——使用Get User Name()函数获取被控端当前用户名。 ●操作系统类型——读取注册表 HKEY I OCAL_MACH 陋\\Software\\Microsoft\\Windows\\Current Version下的Product Nam e键的键值。即为被控端的操作系统类型说明。 ●CPU类型——读取注册表 HKEYJ CAI,MA CHINE\\Hardware\\Descfiption\\System\\Central Processor\\O下的Ident ifie键的键值。即为被控端的 CPU类型说明。 ●物理内存大小——使用Global Memory Status()函数获取被控端计算机物理内存大小。 (4)资源信息控制 首先,在控制端应该有一个树形视图和一个列表视图。树形视图用来显示驱动器、目录资 源;列表视图用来显示文件的详细列表信息。 驱动器资源信息的获取可以在被控端调用API函数Get Drive Type()对26个驱动器盘符 进行轮询。得到被控端的软盘驱动器、硬盘分区、光盘驱动器等信息后,再发送会控制端。控制 端把每个驱动器盘符作为树形视图的根项。 至于每个驱动器下的目录和文件信息的获取 ,则可以使用 MFC重的 CFileFind类。这个类 的功能很强大,可以检索给定路径下的所有目录和文件 ,并且可以得到文件的各种属性 ,比如: 大小、文件建立的时间、文件最后修改时间等。通过响应用户再控制端树形视图上的各种操作, 被控端不断地调用 CFileFind类地各种成员函数 ,即可获得被控端下地所有 目录和文件信息。 最后,远程建立 目录 、删除文件、更改文件名、复制文件等各种操作,均可在被控端调用相 POP Style 一 42 维普资讯 http://www.cqvip.com 电 子 科 技 应地函数来完成,比如:建立 目录可以使用 API函数 Create Directory( 删除文件可以使用 API函数 Delete File( 更改文件名可以使用 API函数 Move File( .复制文件可以使用 A PI函数 Copy File()等。 (5)进程控制 对被控端上的进程的控制也不复杂,被控端在接受到控制端的请求后 ,首先建立一个 PROCES SENTRY32类型的结构变量。然后调用 API函数 Create TOOlhelp32Snapshot()完 成进程查询的准备工作,接着使用 API函数 Process32First()和 Process32Next(),并结合一 个循环语句来进行进程的查询。同时保存所有进程的句柄 ,为用户终止进程做好准备。下面给出 具体的代码如下 : void CServerDone_.~SendProcess()//进程查询函数是 CServerDone类的一个成员函数 { HANDLE dProcessSnap=NULL; processentry32 pe32={0};//结构第一项初始化为零 CString strTemp;//进程信息 DWORD dwID: //获得系统内的所有进程 hProcessSnap=~:CreateToolhelp32Snapshot(TH32CS—SNAPPROCESS,0; if (hProessSnap==(HANDLE)-1) { return;//如果不能查询进程 ,则函数返回 } //结构的一项赋值 pe32.dwSize=sizeof(PROCESSENTRY32); //轮巡所有进程 : :Process32First(hProcessSnap,&pe32); do { //获取进程名 strTemp=pe32.szExeFile; //向控制端发送得到的进程信息 //获取进程ID dwID = pe32.th32ProcessID: //向控制端发送得到的进程信息 //保存进程句柄 } while(::Process32Next(hProcessSnap,&pe32); _ POP Style _ 43 维普资讯 http://www.cqvip.com //向控制端发送进程查询结束标志 //结束进程查询 CloseHandle(hProcessSnap); } 用户可以在控制端的对话框上选择一个进程,并向被控端发送终止该进程的要求。被控端则 调用 EndProcess()函数来无条件终止用户选定的进程。并且将新进程列表返回给控制端。 (6)关闭计算机 被控端得到关闭请求后,直接调用API函数ExitWindowsEx(),通过给它传送不同的参数, 可以强行关闭或是重新启动被控端计算机。 本文介绍的远程控制程序所实现的功能还比较简单,主要是提供了远程控制软件的一个框架,更 多复杂的功能可以在这个框架基础上来添加 ,使远程控制的功能更加实用。比如:控制端获取被 控端的桌面图象信息,并且结合鼠标和键盘 ,直接对被控端计算机进行完全的控制。 参考文献 L1]David d IKruglinski A Scot Winso著 .Visual C十+6.0技术内幕.北京希望电子出版 社 ,1 999 [2]Jeffrey Richter著 .Windows核心编程.机械工业出版社,2000 [3J Anthony Jones& dim Ohlund著 .Windows网络编程技术.机械工业出版社,2000 E4]汪翔,袁辉 著 .Visual c++ 6.0实践与提高~~网络编程篇.中国铁道出版社,2002 POP Style — — 44 维普资讯 http://www.cqvip.com
本文档为【远程控制程序的一种编制方法及实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_587045
暂无简介~
格式:pdf
大小:134KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2010-11-15
浏览量:24