⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8.1 windows management instrumentation.htm

📁 Windows2000后台服务程序开发手册
💻 HTM
📖 第 1 页 / 共 4 页
字号:
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI是一个电脑系统之可延伸资料模组,图8-1会说明其架构。本节将讨论WMI架构的元件。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">Windows Management Service<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>Windows Management 
            Service(WinMgmt.exe)是WMI的主要元件。WinMgmt担任了WMI消费者(管理应用程序)和提供者之间的代理人。其资料被储存在一个物件导向的结构描述中。这个结构描述由DMTF设计并为所有显示WMI资料的元件提供一个单一的资料描述机制。透过提供支援继承的标准结构描述,WMI资料提供者可以提供标准的资料类别和内容,同时也允许取得其他特定厂商的专用扩充程序以区别特定的产品。本章即在说明如何正确地完成本章的大部份内容。</FONT></P>
            <P><BR style="LINE-HEIGHT: 25px"> </P>
            <CENTER style="LINE-HEIGHT: 25px">
            <P><INPUT id=1 style="LINE-HEIGHT: 25px" type=image height=455 
            width=550 src="8.1 Windows Management Instrumentation.files/8-1.gif" 
            border=0 &#111nclick="imgclick"></P></CENTER>
            <CENTER style="LINE-HEIGHT: 25px">
            <TABLE style="LINE-HEIGHT: 25px" border=0>
              <TBODY style="LINE-HEIGHT: 25px">
              <TR style="LINE-HEIGHT: 25px">
                <TD style="LINE-HEIGHT: 25px" align=middle><FONT 
                  style="LINE-HEIGHT: 25px" face=arial color=#000000 
                  size=2><FONT style="LINE-HEIGHT: 25px" face=arial 
                  color=#3e80d7 size=2><B 
                  style="LINE-HEIGHT: 25px">&nbsp;图8-1&nbsp;</B></FONT>WMI的架构</FONT></TD></TR></TBODY></TABLE></CENTER>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7 
            size=3><B style="LINE-HEIGHT: 25px">CIM物件管理者(CIM Object Manager)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>Common Information 
            Model(CIM)物件管理者提供客户端支援多种存取技术的介面,如COM、Scripting、XML、ODBC和ADO。物件管理者支援建立、删除、修改和取回类别和实例的API。类别实例不是由CIM储存机制所提供,此情形称为静态实例,就是由某些种类的提供者(被实作成如COM服务器一样)所提供,此情形称为动态实例。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7 
            size=3><B style="LINE-HEIGHT: 25px">CIM储存机制(CIM Repository)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>CIM储存机制通常只被用来储存WMI支援类别之相关资讯。它基本上是一个符号表,而且不该被用来储存容量大的资料。CIM储存机制不是被存放在允许宣告类别和实例的物件管理者API中,就是直接存放在一个已知的MOF(Managed 
            Object Format)文字中。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">WMI提供者<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>提供者为COM元件,负责在CIM物件管理者与被管理之物件间的完整通讯。提供者可以为内建或特定之应用程序。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>提供者可以为各种形式,一般的例子是一个为被管理之物件回传特定资讯的提供者。类别提供者是可以回传类别和实例之定义的一个更复杂之提供者类型。例如,如果您曾尝试从某些可能有新增表格的资料库中回传资讯,它可能会回传在提供者开启资料库时定义的每个类别之表格。这个提供者为进阶的类型,而且服务通常没有实作它。Active 
            Directory是一个服务的罕见范例,它实作了一个动态的类别提供者。Property提供者为一个较简单的类型,它允许动态的新增属性到静态实例。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI架构之一般意图是使编写提供者的方法尽可能简单—例如,编写一个实例提供者可能只是产生几行程序代码的问题而已(也就是在WMI 
            SDK中经由提供者产生之工具和范例的说明)。提供者的建构也会利用到继承的观念。如果您在一个类别中新增一个已经拥有提供者的子类别,则您只需为您的新属性或为您所覆写(Overriding)之类别提供属性值即可。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">被管理之物件<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>一个被管理之物件可以是任何的企业元件(Enterprise 
            Component)—例如:一个Win32物件或服务。一个服务允许客户端使用允许自己在一个WMI物件实例中显示管道之匿名管道(Name 
            Pipe)与它连结。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">管理应用程序<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>管理应用程序是一个与本地机器或远端机器通讯之WinMgmt服务应用程序。这些应用程序可以询问WinMgmt服务以决定所有存在一个机器中的逻辑与实体元件。然后这个资讯会被显示并修改,让使用者可以确实地理解并改变机器的设定。另外,当特定的事件发生时,管理应用程序可以命令WinMgmt服务传送一个通知讯息。例如,当机器的硬盘空间少于20% 
            或一个新的处理程序开始在被管理之机器上执行时,管理应用程序可以接收一个通知讯息。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">结构描述(Schema)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI隐藏了管理环境之所有可怕及复杂的事物。它采用了Win32 APIs、登录设定、Simple Network 
            Management Protocol(SNMP)Management Information 
            Bases(MIBs)和Traps以及所有其他混杂的管理介面,并将它们包装在一个定义严谨的结构描述中。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>结构描述并非是从WMI分离的一个元件,却是WMI的一个重要部份。结构描述是一个描述被管理之物件类别的集合。所有在WMI架构中的元件皆支援结构描述。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>结构描述由物件管理者提供,能处理大批的资讯,包括系统、网路、应用程序、设备和实体元件,以及使服务的安装、设定与管理发生作用。结构描述由被安排在拥有属性、关联和方法之类别中的实例所组成。</FONT></P>
            <HR style="LINE-HEIGHT: 25px">

            <P><FONT style="LINE-HEIGHT: 25px" face=Arial color=#3e77d7 size=3 
            Black><B style="LINE-HEIGHT: 25px">WMI名称的演化</B></FONT> </P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>Common Information Model(CIM)是由Distributed Management Task 
            Force(DMTF)定义的规格,描述以物件导向的方法来管理系统和网路之内容。Microsoft起初将CIM之实作命名为「Web-Based 
            Enterprise Management(WBEM)」,而核心模式部份则命名为「Windows Management 
            Information(WMI)」。DMTF开始在市场销售时,使用「WBEM」来描述一组以CIM之网际网路技术为基础的管理。然后Microsoft将他们所实作的CIM名称改为「WMI」,而核心模式部份的名称则改为「WMI 
            extensions for the Windows Driver 
            Model(WDM)」。由此名称的演化过程,您将可以发现Windows使用了「WMI」、「WBEM」以及「CIM」来表示其函数、介面、类别以及其他元件的管理架构。</FONT></P>
            <HR style="LINE-HEIGHT: 25px">
            </A><A style="LINE-HEIGHT: 25px" name=208002>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e70d7 
            size=5><B style="LINE-HEIGHT: 25px">WMI工具<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI有许多可用的工具。您可能会时常使用的二个工具是CIM 
            Studio和MOF编译器。在本章稍后之〈TimeServiceProvider范例〉一节中,将会讨论另外一个WMI Provider 
            Code Generator Wizard工具。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">WMI CIM Studio<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI CIM 
            Studio是一个察看和编辑CIM储存机制之类别与实例资讯的工具。类别和实例被分配到一个名称为命名空间(namespace)的单元群组中。WMI提供一个名称为root\CIM2的命名空间,它包含了所有代表系统之类别和实例。为了对WMI进行试验,请安装WMI 
            SDK(特别是WMI工具,存放在附赠光碟上的Platform SDK中)。在安装了SDK后,您便可以使用CIM 
            Studio工具来察看root\CIMV2命名空间的内容。本章中将使用CIM Studio以说明WMI的许多能力。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>要开启CIM Studio时,请从公用程序集中选择WMI CIM Studio,它会被列在Microsoft 
            Platform SDK群组下(或者是WMI 
            SDK群组)。为了察看被安装在机器上的服务清单,请移至Win32_Service类别,并浏览CIM_ManagedSystemElement、CIM_LogicalElement、CIM_Service、Win32_BaseService以及Win32_Service的内容。按下右窗格上面的Instance工具列按钮,您应该会看到如图8-2所示的内容。</FONT></P>
            <P><BR style="LINE-HEIGHT: 25px"> </P>
            <CENTER style="LINE-HEIGHT: 25px">
            <P><INPUT id=2 style="LINE-HEIGHT: 25px" type=image height=574 
            width=731 src="8.1 Windows Management Instrumentation.files/8-2.gif" 
            border=0 &#111nclick="imgclick"></P></CENTER>
            <CENTER style="LINE-HEIGHT: 25px">
            <TABLE style="LINE-HEIGHT: 25px" border=0>
              <TBODY style="LINE-HEIGHT: 25px">
              <TR style="LINE-HEIGHT: 25px">
                <TD style="LINE-HEIGHT: 25px" align=middle><FONT 
                  style="LINE-HEIGHT: 25px" face=arial color=#000000 
                  size=2><FONT style="LINE-HEIGHT: 25px" face=arial 
                  color=#3e80d7 size=2><B 
                  style="LINE-HEIGHT: 25px">&nbsp;图8-2&nbsp;</B></FONT>显示已安装服务的WMI 
                  CIM Studio</FONT></TD></TR></TBODY></TABLE></CENTER>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">MOF Compiler<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>MOF 
            compiler为WMI提供的一部份,可被用来引入新的类别与实例至系统中。以下的MOF范例说明了一些WMI类别的特征:</FONT></P>
            <DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT 
            style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">[static] class Msft__Joke { <BR> [key] string JokeName;; <BR>&nbsp;&nbsp;string JokeText; <BR>}; <BR>instance of Msft_Joke { <BR> JokeName = "KnockKnock1"; <BR> JokeText = "Knock,knock. :Who’s there? Dwayne: Dwayne, who?: " <BR>&nbsp;&nbsp;"Dwayne the bathtub, I’m dwowning!"; <BR>};</PRE></FONT></DIV>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>透过关键字class可以确定类别,而它的前面可以放置包含在中括弧([ 
            ])内的限定词。该限定词用来提供与类别处理有关的资讯,例如,该如何实作它或者如何将资讯本土化的方法。类别属性由放置在前面中括号内的限定词定义。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>在Msft_Joke范例中,类别被定义为[static],表示该类别的实例被储存在WMI储存机制内。JokeName的为字串属性,它是该类别的一个重要部份,表示类别的每一个实例皆必须有一个属性值,而且这个值必须与已存在的其他实例不同。</FONT></P></A><A 
            style="LINE-HEIGHT: 25px" name=208003>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e70d7 
            size=5><B style="LINE-HEIGHT: 25px">WMI的资料组织<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI提供了一组安排资料应如何描述给使用者的基础类别。经由这些类别的使用,您可以避免大量结构描述设计的负担—所有您必须在已存在设计中扩充的事情。但是在扩充WMI以展示服务之特征时,您需要了解WMI免费提供的内容。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>WMI将管理资讯分成几个类别,这些类别经由一些高阶类别而表示在WMI结构描述中。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">操作上的资料(Operational Data)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>操作上的资料与目前状态有关,并处理像「该服务需要多少内存?」这类的问题。它描述了系统真正做的事以及它的能力。例如,在服务的内容中,系统可能指示了服务可以与桌面互动的能力、服务的显示名称等等。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">设定资料(Setting Data)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>设定资料描述了被要求的状态以及结构的资讯,并处理如「服务应该使用多少内存?」之类的问题。当您在设定资料时,可以问自己一些问题,例如:「这个属性有其他可能的设定值而某些值在不同使用者或不同时间的情形下皆可正确执行吗?」这些种类的问题可以帮助您组织资料。例如,不管之前的问题,如果有多于一个属性的设定值存在,您应该将资料分开至一个不同的设定类别中,以提供这个结构资讯。在很多情况下,您可能会在设定和操作上的资料中发现类似的值。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">统计的资料(Statistical Data)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>统计的资料回答了像「服务现在使用了多少内存?」这类的问题。除了描述一些偶尔才被要求的统计资料外,它与操作上的资料类似,对效能的了解很有帮助,但是对了解被管理物件的状态部份则不是必需的。如果没有其他比必须避免在固定对操作上的资料存取时评估其统计资料的工作还重要的话,则必须从操作的资料中提取统计的资料。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">历史的资料(Historical Data)<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>历史的资料回答了如「有少内存已被服务使用?」的问题并描述之前的状态。WMI没有提供一个预期捕捉大量资料的记录,但是它提供了一个资料传递机制和一个描述历史资料状态的表现形式,当您阅读到本章稍后之事件部份时便可看到这个内容。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>考虑是否扩充WMI时,第一个要决定的是您想要引入的资料是否已被WMI支援。如果已支援,您便不需做任何事。如果没有的话,您就要描述您想处理之操作上的、设定、统计的或历史的资料;找出一个合适的类别;然后察看您有兴趣的资料内容是否已经存在该资料中。例如,如果您新增了一个新的服务,您将发现已经有一个Win32_Service的实例出现。若您需要加入新的操作上资料,则应该使用基础的Win32_Service来取得一个新的类别,然后,透过一个适当的方法使它存放在这个被取得的类别中(稍后会有更多的相关内容)。</FONT></P></A><A 
            style="LINE-HEIGHT: 25px" name=208004>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e70d7 
            size=5><B style="LINE-HEIGHT: 25px">WMI提供之与服务相关的核心类别<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>让我们简短的看一下WMI提供之与服务相关的核心类别。这些类别如图8-3所示。CIM_ManagedSystemElement、CIM_Setting以及CIM_StatisticalInformation类别分别为作业上的、设定和统计的资料提供根目录类别。如您从Win32_BaseService类别中看到的,WMI对关于服务以及和服务之定义、修改、启动、停止和删除有关之基本方法提供了各式各样的资讯。</FONT></P>
            <P><BR style="LINE-HEIGHT: 25px"> </P>
            <CENTER style="LINE-HEIGHT: 25px">
            <P><INPUT id=3 style="LINE-HEIGHT: 25px" type=image height=720 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -