基于WMI的WindoWs远程监控VC++Word格式文档下载.docx
《基于WMI的WindoWs远程监控VC++Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于WMI的WindoWs远程监控VC++Word格式文档下载.docx(66页珍藏版)》请在冰豆网上搜索。
专业
班级
08电子科学与技术2班
题
目
题目名称
基于WMI的Windows计算机远程监测与控制
题目性质
1.理工类:
工程设计();
工程技术实验研究型();
理论研究型();
计算机软件型(√);
综合型()
2.文管理类();
3.外语类();
4.艺术类()
题目类型
1.毕业设计(√)2.论文()
题目来源
科研课题()生产实际(√)自选题目()
主
要
内
容
1.获取本地和远程计算机的硬件软件信息。
2.监视本地和远程计算机的软件和服务等运行状况。
3.控制远程计算机。
基
本
求
(1)学习计算机的工作原理,硬件结构以及Windows操作系统的监测原理。
(2)通过WMI获得远程计算机软硬件相关参数,取出参数进行分析。
(3)与远程计算机连接进行控制。
(4)用MFC编程,把监测结果直观表现数来,并是控制操作方便快捷。
(5)阅读和翻译有关外文资料,按时完成论文以及答辩。
参
考
资
料
1、VB.VET高级编程/(美)BillEvjen,BillyHollis著杨浩译
2、MFCWindows程序设计/(美)JeffProsise北京博彦科技发展有限责任公司译
3、《WMI技术指南》(美)MarcinPolicht
5、《VisualC++2008入门经典》电子书
周次
第1~2周
第3~6周
第7~10周
第11~14周
第15~16周
应
完
成
的
搜集资料,学习WMI的相关知识,思考程序架构
实现本地检测,连接远程计算机,实现远程监测功能。
实现远程控制功能
MFC写界面融合监测与控制功能于一体
测试结果、准备
答辩
指导教师:
谈爱玲
职称:
讲师2012年3月2日
系级教学单位审批:
年月日
摘要
传统的计算机管理方法是采取严格的C/S模式,这种方法不仅增加了客户端的系统开销,而且对各种故障难以检测,其管理效率很难得到较大改善。
本文首先介绍一种高效管理计算机的技术—WMI(WindowsManagementInstrumentation)—Windows管理规范,然后提出一种基于WMI技术对计算机进行高效管理的方法。
本文在介绍了通过VBscript脚本实现基于WMI的计算机管理和VC++以及MFC的基础上,简单的使用用VBScript脚本实现远程Windows计算机管理,并主要通过VC++编程,实现获取远程计算机的软硬件信息,通过MFC界面展示所监测数据,利用模块化的编程设计思想,把各个功能模块分别实现,协同工作,达到高效管理计算机的目的,而且界面操作简单,并最终实现使用WMI远程监控计算机的具体方法,而且结合应用实例说明这种方法的有效性。
关键词 计算机管理;
WMI;
Windows管理规范;
远程控制计算机
Abstract
ThetraditionalcomputermanagementmethodthatadoptsstrictC/Smodenotonlyincreasesoverheadoftheclientsystem,butalsoaredifficulttodetectforallkindsoffaults.Itisdifficulttoimprovethemanagementefficiency.Thispaperintroducesanefficientmanagementofcomputertechnology-WMI(WindowsManagementInstrumentation)andthenproposedonekindofefficientcomputermanagementmethodbasedontheWMItechnology.
Inthispaper,onthebasicofintroducingcomputermanagementbyWMI,VC++andMFC,simplelyusingVBScriptscriptstorealizeremoteWindowscomputermanagement,andmainlyrealizeaccesstoremotecomputerhardwareandsoftwareinformationthroughtheVC++programming,showsthedatawegetthroughtheMFCinterface.Usingthemodularprogrammingdesignthought,thefunctionsofeachmodulewererealized,andworkcollaboratively,achievedthetargetefficientmanagementofcomputer,andtheinterfaceissimplelytooperate.Ultimately,implementedmonitoringandcontronlingremotecomputerspecificmethodbyusingWMI,andshowsthatthismethodiseffectivecombinedwiththeapplicationexample.
Keywords computermanagement;
WMItechnology;
remotecontrolofthecomputer
第1章 绪论
1.1 课题背景与选题依据
计算机系统管理的标准化最近成为业内人士关注的重点。
这一现象并不令人意外,因为对这样的标准来说,一经建立和接纳,便会牵扯到所有人的利益。
针对各类基础结构,程序员可以采用“插件”的形式,开发出能重复使用的软件组件。
最终用户可享受到越来越高的可靠性,同时不会由于频繁的升级、维护或者不可预期的当季时间而影响工作效率。
管理者可利用它有效的缩短自己的总体成本,最后,系统管理员和IT人员可从一个位置部署,配置和检测数百台计算机——无论他们的配置或操作系统是什么。
因此,这些人可以从以往繁重的工作中脱离出来,在缩短工作时间的同时,轻松地完成自己的任务[1]。
微软一直都在努力地使Windows操作系统易于管理,这是通过集中不同的策略来实现的。
目前在WindowsNT4.0OptionPack中采用了WindowsScriptHost以来,脚本功能得到了显著改进。
1994年,微软发布了版本号为1.0的SystemsManagementServer,它提供了硬件和软件库存、软件分布发布以及远程诊断功能。
ZeroAdministrationInitiativeforWindows(Windows零管理,ZAW)不仅把这两种功能合为一体,同时还合并了一些其他技术(如微软管理管理控制台、Windows管理规范、基于Web的企业管理、系统策略和零管理包等)。
ZAW最初面向的是WindowsNT/9x操作系统,允许实现自动化管理任务,并可对客户机的桌面进行集中式管理。
后来SystemsManagementServer2.0进一步增强了这些特性。
随着Windows2000的问世,微软采取个积极的手段开发出高效的管理策略。
根据下面这几个设计好的目标,Windows2000成为其中主要的支持平台:
管理同活动目录服务的集成。
将.NET企业服务器(SQLServer2000、ExchangeServer2000和BizTalkServer2000)包括到管理范畴内。
将XML(可扩张标记语言)和SOAP(简单的对象访问协议)规范作为交换管理数据的标准方法使用。
要实现这些目标,就必须对Windows零管理(ZAW)进行扩展,加入Windows2000基本结构的核心元素,比如IntelliMirror(智能镜像)、ActiveDirectory(活动目录)和基于Web的企业管理组(WBEM)。
目前有明显的趋势可以证明,在下一个版本的Windows中,必然会提供对这个策略的支持。
Windows管理设备必然成为.NET方案的管理基础。
另外,微软也允许第三方软件开发商支持该结构产品。
此外,微软还成立了MicrosoftManagementAlliance(微软管理联盟),目的是帮助其他厂商构建相应的产品来支持新结构。
业内其他竞争者也没有放慢自己的脚步。
Unicenter(来自CA国际公司)和Enterprise(来自TivoliSystems公司)均为十分成熟的产品,支持多平台上的管理功能。
NetIQ的OperationsManageer(已获微软授权)能在Windows系统上提供实时的性能管理与监视。
对那些预算吃紧的小公司来说,即便在这些“精简”方案面前,他们的费用也通常超出了能够接受的限度。
即使在较大的公司里,对管理控制台的访问都是由一个中心的IT小组小心的看管着,极少被纳入日常的管理任务中。
幸运的是,我们还有一个备用方案可供使用。
“专业”管理工具提供的大多数特性其实都可通过一系列相对简单的脚本来实现。
其中要用到的核心组件(它提供了所需的功能)便是WMI。
WMI是Windows2000以及Windows.NET的一种内建服务,这证明了微软试图将WMI作为自己管理策略的一个密不可分的部分提供给用户。
WMI也可在其他Win32平台上使用,同时可作为加载项或免费工具下载[2]。
WMI(WindowsManagementInstrumentation,Windows管理规范)是一项核心的Windows管理技术;
用户可以使用WMI管理本地和远程计算机。
1.2 WMI管理计算机的优点
通常,WMI可提供三种类型的管理功能:
数据收集——访问来自不同来源(操作系统、性能计数器、事件日志、注册表、硬件、驱动程序和目录服务)的系统信息。
这些信息可针对资源管理进行分析与总结,以便创建性能能基准,进行可用性分析(为实现所需
的服务级别)或进行安全方面的跟踪。
系统配置——通过一种集中化的方式来修改系统信息,其中包括操作进程、服务和软件组件,进行系统维护或升级,以及执行作业,等等。
事件管理——被检视系统组件的属性一旦发生改变,可以及时知道。
这种侦测既可以通知作为基础(发生时再通知),也可以时间间隔作为基础(定时通知)。
在主动和被动解决问题。
错误隔离。
控制系统可用性和系统
健康监视过程中,这一功能是十分有用的。
WMI可以实现的功能:
收集Windows性能监视器数据(比如剩余磁盘空间的百分比,处理器利用率),对其进行总结或自动采集相应的行动(比如清除临时文件夹、InternetExplorer缓存以及终止无用进程等等)。
收集Windows事件日志条目,并定义特定的行动,针对特定事件做出响应。
数据也可以进行总结,而事件日志可进行清空备份处理。
查询被管理系统的不同特征,比如操作系统版本、NetBIOS名称、与成员、物理和逻辑盘、交换文件信息、日期和时间设置等等。
启动,暂停、停止、恢复和删除服务。
启动、终止和查询进程。
关机或重启系统。
注销用户。
收集与打印机和打印队列有关的信息。
获取和编辑Windows注册表信息。
获取和编辑目录服务信息(包括活动目录)。
控制网络配置(显示和修改路由表、网卡协议设置的内容)。
访问WDM设置驱动程序信息。
相同的脚本可同时应用在本地和远程系统中(要提供足够的许可权限)。
本论文主要展示几种不同的方法来访问WMI,如VBScript脚本,VC++和其他Windows组件对象模型提供的功能上面。
1.3 脚本方法理论
VisualBasic脚本版(VBScript)是本次毕设学习阶段采用的脚本语言。
和Windows管理员为自动化任务而使用的WindowsNT命令相比它的功能较强,足够达到我们的目的。
WindowsScriptHost(WSH)将用于提供脚本编制环境。
利用WSH,能访问WindowsCOM对象。
WMI用于提供对管理数据的访问。
在WindowsScriptHost2.0中引入的可扩展标记语言(XML)特性,用于提供辅助脚本格式。
XML和WSH2.0的联合使用并不一定是必需的。
但是遵守XML规范任然是有好处的[3]。
从概念上说,大多数脚本中沿用的基本思想都是相当简单的。
需要的数据有WMI提供,不必过分操心这些数据时如何生成的,它的生成流程会进一步解释,将利用由WindowsScriptHost和WMI对象模型提供的技术来访问它。
有了一定程度的熟悉后,将利用VBScript中的一系列命令来处理它,并生成自己需要的结果。
脚本连接WMI,获取WMI管理资源,然后返回资源属性。
唯一改变的是类名(即,Win32_LogicalMemoryConfiguration,Win32_Service和Win32_NTLogEvent)和资源的相应属性。
三步骤对WMI脚本是通用的。
下面仔细考察每一个步骤。
Step1:
连接WMIService
任何脚本的第一个步骤就是与目标电脑上的Windows管理服务建立连接。
连接本地或远程电脑的WMI很简单,调用VBScript的Getobject函数,其参数为WMI脚本库的标记名(即"
winmgmts:
"
)和目标电脑名
用这种方式连接WMI,会返回对SWbemServices对象的引用,在Listings1,2和3中用变量名wbemServices引用。
SWbemServices是在WMI脚本库中定义的。
WMI脚本库提供通用功能对象集,脚本使用他们来访问WMIinfrastructure。
一旦引用了SWbemServices对象,就可以调用SWbemServices提供的任何方法。
InstancesOf就是这样一种方法
Step2:
获取WMI管理资源
不可否认,第二步绝大程度上取决于要执行的任务。
在获取有关WMI管理资源的信息时,第二步很简单,调用SWbemServices对象的InstancesOf方法。
如同名字暗示的那样,InstancesOf返回所有的由资源类名标识的管理资源。
InstancesOf按SWbemObjectSet集合的方式返回请求的资源。
再Listing1,2和3中,使用变量名wbemObjectSet来引用。
SWbemObjectSet是WMI脚本库定义的另外一个脚本对象
Step3:
显示WMI管理资源的属性
最后一步是列举SWbemObjectSet集合的内容。
SWbemObjectSet内的每一项是一个SWbemObject(WMI脚本库的对象),他表示请求资源的单个实例。
可以使用SWbemObject来访问管理资源类定义中定义的方法和属性。
1.4 本课题的主要内容
本文共分为3章,课题的结构安排如下:
第1章中结合课题背景与国内外WMIWindows管理研究现状分析课题的选题依据,以研究意义等,同时对WMI技术做简单的介绍。
第2章从VBScript脚本理论方面叙述WMI管理Windows计算机的原理,同时根据原理,介绍课题基于WMI的Windows计算机远程监控整体思路与远程监控设计。
第3章首先简单介绍VC++编程,以及课题所涉及的计算机管理等内容,然后按课题进展,模块化设计思想,介绍mfc界面实现远程监控与程序编写。
最后用VC++实现远程监。
第2章 使用脚本语言实现基于WMI的Windows监控
2.1 通过VBScript实现
2.1.1 VBScript简介
VB的中心思想就是要便于程序员使用,无论是新手或者专家。
VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。
VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。
因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。
过去的版本里面VB程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。
窗体控件的增加和改变可以用拖放技术实现。
一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。
每个控件都有自己的属性和事件。
默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。
很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序[4]。
举个例子来说:
窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。
在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。
VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。
有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。
VB的组件既可以拥有用户界面,也可以没有。
这样一来服务器端程序就可以处理增加的模块。
VB使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。
因为越来越多组件的出现,程序员可以选用自己需要的扩展库。
和有些语言不一样,VB对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。
默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。
VB使得大量的外界控件有了自己的生存空间。
大量的第三方控件针对VB提供。
VB也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。
2.1.2 编辑本段属性、方法和事件
在VisualBasic中,可以通过属性、方法和事件来说明和衡量一个对象的特征。
1)、事件(Event)事件是指发生在某一对象上的事情。
事件又可分为鼠标事件和键盘事件。
例如,在命令按钮(CommandButton)这一对象上可能发生鼠标单击(Click)、鼠标移动(MouseMove)、鼠标按下(MouseDown)等鼠标事件,也可能发生键盘按下(KeyDown)等键盘事件。
总之,事件指明了对象“什么情况下做?
”,常用于定义对象发生某种反映的时机和条件。
2)、方法(Method)方法是用来控制对象的功能及操作的内部程序。
例如,人具有说话、行走、学习、睡觉等功能,在visualBasic中,对象所能提供的这些功能和操作,就称作“方法”[5]。
以窗体为例,它具有显示(show)或隐藏(hide)的方法。
总之,方法指明了对象“能做什么?
”,常用于定义对象的功能和操作。
3)、属性(Property)属性是指用于描述对象的名称、位置、颜色、字体等特征的一些指标。
可以通过属性改变对象的特性。
有些属性可以在设计时通过属性窗口来设置,不用编写任何代码;
而有些属性则必须通过编写代码,在运行程序的同时进行设置。
可以在运行时读取和设置取值的属性成为读写属性,只能读取的属性成为只读属性。
总之属性指明了对象“是什么样的?
”,常用于定义对象的外观。
2.1.3 对象与类
1)、对象(Object)Visualbasic具有“面向对象”的特性,VisualBasic应用种程序的基本单元是对象,用VisualBasic编程就是用“对象”组装程序。
这种“面向对象”的编程方法与传统的全部用代码编制程序的方法有很大区别,就像用集成电路芯片组装电视机和用三极管,二极管组装电视机的区别一样。
显然,“面向对象”的编程方法比传统的编程方法更简单,更方便,并且编写出的程序也更加稳定。
因此,“对象”可以被看做VisualBasic程序设计的核心。
在VisualBasic程序设计中,对象中还可以包含头,手,腿,脚等部位,其中的每个部位又可以单独作为作为被研究的对象。
在VisualBasic程序设计中,整个应用程序就是一个对象,应用程序中又包含着窗体(Frame),命令按钮(Command),菜单(Menu)等对象。
2)、类(Class)在VisualBasic中,对象是由类创建的,因此对象可以说是类的具体实例,这就好比是蛋糕和做蛋糕的模具之间的关系。
各种不同的对象分属于各种不同的种类。
同一类对象可能具有一些不同的特征(或是说同一类对象不一定具有完全相同的特性);
具有某些相同的特性的对象,不一定是同一类对象,这就好比是人和猴子虽然都有身高、性别等特征,但二者之间还存在着智商、语言等特性差异,这两个对象之间的特性相差很多,根本就不能算是同一类对象。
而男人和女人,虽然有着性别、生理等方面的差异,但他们绝大部分特性相同,可以算是同一种类。
由此,可以归结为一句话:
同一类对象的绝大部分特性相同。
2.2 VisualBasic的局限性
VisualBasic语言具有不支持继承、无原生支持多线程、异常处理不完善等三项明显缺点,使其有所局限性。
(此些缺点皆已在VB.NET获得改进)
1)、不支持继承VB5和VB6都是基于对象的编程语言,但是不包含继承特性。
VB中提供了特殊的类的功能,但是还是不能满足程序员的需求。
VB.NET已包含了所有面向对象的特性。
2)、无原生支持多线程VisualBasic对于多线程无原生支持,只能通过WindowsAPI的调用实现。
VB.NET已支持多线程技术。
3)、异常处理不完善VisualBaisc中内置异常处理,即使未写异常处理代码,一旦用户出错也会弹出一个明确写出出错原因对话框,接着程序终止。
VisualBasic中可以使用Err.Raise抛出异常。
对系统及用户抛出的异常的处理常用两种模式:
一是使用OnErrorResumeNext处理错误;
另一种是使用OnErrorGoto将运行引入错误处理代码。
但相对C++等语言而言,这样的异常处理破坏了代码的结构。
VB.NET已支持更佳的异常处理机制。
2.3 基于WMI的计算机管理技术的实现
基于结合WMI和WEB服务技术来获取远程计算机信息、远程控制计算机及具体的实现方法,其它的管理功能如监视应用程序的运行状况、管理和配置应用程序等.均可采用类似的方法实现。
2.3.1 使用WMI获取远程计算机信息
现在的计算机以及网络组成十分复杂,例如系统硬件方面就有主板、硬盘、网卡等;
软件方面有操作系统、系统中安装的软件、正在运行的进程等;
网络方面有域、工作组等等,对这些信