用率是多少、某一应用程序正连接到哪一数据库等等);或者它们可以通过使用ManagementEventWatcher类来预订各种管理事件。笔者在学习了上述相关理论知识后,了解在.NET中如何与WMI进行通讯以便达到获取信息的目的,并着手编写了一些利用System.Management下面的类来获取系统相关信息的代码,在此做一些简单介绍。
获取硬件信息(以下是一段获取主板的序列号以及制造商的代码):
Dim searcher As New ManagementObjectSearcher("SELECT+FROM Win32_BaseBoard"、
Dim share As ManagementObject
For Each share In searcher.Get0
Debug.WriteLine("主板制造商:"&share("Manufacturer"))
Debug.WriteLine("型号:"&share("Product"))
Debug.WriteLine("序列号:"&share("SerialNumber")1
Next share
此段代码同样采用WQL语句实现。同理,还可获取网卡硬件地址、硬盘ID和CPU系列号等信息,在此就不一一列举。
获取软件信息(以下是一段列出所有系统当前共享目录的代码):
Imports System.Management
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_share"、
Dim share As ManagementObject
For Each share In searcher.Get0
MessageBox.Show(share.GetText(TextFormat.MoO)
Next share
2.3.2 使用WMI远程控制计算机
WMI提供了大量的规范以便为许多高端应用程序(例如,Microsoft Exchange、Microsoft SQL Server和Microsoft Interact信息服务(IIS))实现几乎任何管理任务。管理员可以执行下列任务:(1)监视应用程序的运行状况;(2)检测瓶颈或故障;(3)管理和配置应用程序;(4)查询应用程序数据(使用对象关系的遍历和查询);(5)执行无缝的本地或远程管理操作。
一般而言,对计算机的控制主要包括:重新启动计算机、关闭计算机、注销当前用户、启动或终止某个进程(某项服务)。
使用WMI实现远程控制的最简单方法是编制WMI脚本程序.然后在命令行中运行该脚本.其命令格式为:Cscript.exe脚本文件名,Cscript.exe是执行脚本的宿主程序,当运行该程序时,它自动执行作为输入参数的脚本文件。
通过编写WMI脚本程序来实现计算机远程控制的过程中发现编写WMI脚本的很大一部分工作涉及到读取和设置属性值,WMI脚本的语法比较简单,编制起来较容易。脚本程序在任何一个具有WSH(Windows Script Host)环境的系统中都可以运行[6]。
由于它不依赖于特定的开发工具和运行环境.因此具有良好的可移植性。只要在脚本中指定了要控制的远程计算机名,且该计算机是可访问的同时拥有远程系统的管理员权限,则在任何时候都可以对它进行远程控制。相对于传统的C/S控制模式,这种方法显得相当简单和可靠。
对比传统的C/S控制模式,我们需要能更高效地管理计算机,因此笔者又尝试在软件中实现远程控制功能,发现同样通过简单的代码既可实现,以下介绍笔者在.NET环境下远程控制计算机的实现方法。
以远程关闭计算机为例(VB.NET编写的核心代码):
Dim scope As ManagementScope=New ManagementScope ("\\"+RemoteHostName+"hqoot\CIMV2",opfiong)
//以给定的管理员帐号连接给定计算机名或者IP地址的计算机
Try
scope.Connect0//连接远程计算机
Dim oq As System.Management.ObieetQuery
oq=New System.Management.ObjectQuery("Select+From Win32_O'peratingSystem"、
//调用远程计算机进行WMI操作
Dim gwo As ManagementObiectSearcher
gwo=New ManagementObjectSearcher(scope.oq)
//从已经完成远程连接的计算机中,得到WMI操作集合
Dim pwo As ManagementObiectCollection
pwo=gwo.Get()//存放得到WMI操作
Dim mo As ManagementObject
//定义WMI操作对象 ForEach 1110 In pwo
Dim ssO As String 2 fIt"
根据企业的作息时间,我们设置用户只能在上班时间登录网络(8:00 - 17:00),其他时间不能登录网络。单击组织单位名一在 建立的用户名上右击一选择属性一单击帐户选项卡一点击登录时间一我们可以设置用户允许登录的时间为8:00-7:00。
点击登录到一输入计算机的名称如N01一添加一则我们可以控制该用户只能通过N01登录到网络.而不能使用其它的计算机登录。
2.4 本章小结
本章主要介绍了VB脚本语言,及其特点,以及WMI脚本理论,用VB脚本实现远程监控。
VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。Visual Basic 语言具有不支持继承、无原生支持多线程、异常处理不完善等三项明显缺点,使其有所局限性。
基于结合WMI和WEB服务技术来获取远程计算机信息、远程控制计算机及具体的实现方法,其它的管理功能如监视应用程序的运行状况、管理和配置应用程序等.均可采用类似的方法实现。
WMI的功能十分强大,可以管理windows的方方面面,从常见的文件操作到硬件管理,都可以通过WMI来实现。
第3章 VC++实现WMI监控
3.1 VC++简介
1)、C++组成部分
根据Effective C++第三版第一条款的描述,现在C++由以下四个"子语言"组成:
1、C子语言。C++支持C语言的几乎全部功能,主要是C89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。
2、面向对象的C++语言。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本。
3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。
4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。
此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。
2)、语言特点[7]
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
C++避免平台限定或没有普遍用途的特性。
C++不使用会带来额外开销的特性。
C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
3)、优点
C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。
4)、争议
C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响
上一篇:
毕业设计(论文)考核表(基于VC++的虚拟仪器控件的设计)(2003doc)
下一篇:
采用VC的伺服电机控制毕业论文(2003doc)