AndroidManifest.xml文件详解

AndroidManifest.xml文件详解
AndroidManifest.xml文件详解

AndroidManifest.xml文件详解

每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml文件。这个清单把应用程序的基本信息提交给Android系统,在应用程序的代码能够运行之前,这个信息系统必须建立。以下是清单文件要做的一些事情:

1.用Java包给应用程序命名。这个包名是应用程序的唯一标识;

2.描述应用程序的组件---组成应用程序的Activity、Service、Broadcast Receiver以及Content Provider。它要用每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。这些声明会让Android系统了解应用程序中组件,以及这些组件被加载的条件。

3.判断哪些进程是主应用程序组件。

4.声明应用程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应用程序进行交互。

5.为了跟应用程序组件进行交互,还声明了其他要求有的权限。

6.列出了能够提供应用程序运行时的分析和其他信息的Instrumentation类。只有在开发和测试应用程序时才在清单文件中声明这些类,在应用程序被发布之前,要删除这些类。

7.声明应用程序所要求的最小的Android API级别。

8.列出应用程序必须链接的外部库。

Manifest文件的结构

下图中包含了清单文件的一般性结构,并且包含所有能包含的元素。每个元素所带有的全部元素会在它们各自的文档中介绍。

. . .

. . .

. . .

以下按字母顺序列出了清单文件中的所有元素,这些元素时Android系统法定元素,不能添加自定义的元素或属性。

AndroidManifest.xml文件详解(二)

文件约定

某些约定和规则普遍适用于清单中的所有元素和属性:

元素

只用元素时必须的,而且这两个元素在文件中只能出现一次。其他元素则可以多次出现在清单中,或者根本就不出现---但是为了构建一个有意义的清单,必须要在清单中声明某些元素。

一个元素所包含的任何声明,包括它所包含的其他元素,所有的值都是通过属性来设置的,而不是用夹在开闭元素之间的字符数据。

相同级别的元素通常是没有顺序的。例如,元素可以是任意顺序的。(元素是个例外,它必须放在它所代表的元素的后面。)

属性

在正式的含义中,所有的属性都是可选的,但是,为了达成目的,必须要给元素指定一些属性。对于真正的可选属性,会指定发生在特殊情况下的默认值或状态。

除了根元素的一些属性之外,其他所有属性的命名都带有android:前缀---例如,android:alwaysRetainTaskState。因为这个前缀是通用的,所以本文档在提到属性名时,通常

会忽略这个前缀。

声明类名称

许多元素都对应着Java对象,包括代表应用程序自己的元素,以及基本的组件---等。

如果要定义子类,那么这些子类几乎总是继承以下组件类:Activity、Service、BroadcastReceiver、ContentProvider。子类是通过name属性来声明的。这个名称必须是完整Java包名。例如,下例演示了Service子类的声明方法:

. . .

. . .

但是,也可以使用简略的表达方式,用”.”符号做为name属性值的第一个字符。在Android 系统解析是会在”.”符号前追加包名(包名是在元素的package属性中声明的)。下例的声明方法与上例的结果相同:

. . .

. . .

在启动组件时,Android会创建这个命名子类的一个实例对象。如果没有指定子类,那么就会创建一个基类的实例对象。

多个值的设定

如果要给一个元素指定多个值,那么几乎总是重复使用这个元素,而不是在一个元素中列出多个值。如:

. . .

资源值的设定

有一些属性值是能够显示给用户的---例如,Activity的标题和图标。这些属性值应该被本地化,并因此要设置在资源或主题中。资源值是用下列格式来表示的:

@[package:]type:name

如果资源与应用在同一个包中,那么package的名称可以被忽略,type是资源的类型---如“string”或“drawable”,name是标识指定资源的名称。例如:

来自主题的值是用类似的方式来表示的,但是要以…??开始,而不是…@’:

?[package:]type:name

String值的设定

当属性值是一个字符串是,…\\’符号要用于字符转义---如…\\n’表示在此处换行,…\\uxxxx’表示…xxxx’是Unicode字符。

AndroidManifest.xml文件详解(三)

文件功能

以下章节介绍清单文件是如何反映Android的某些功能的。

Intent过滤器

应用程序的核心组件(Activity、Service、Broadcast Receiver)都是通过Intent对象来激活的。Intent对象绑定了所期望的操作的信息说明---包括要操作的数据、执行操作的组件类别、以及其他相关的指令。Android会定位一个合适的组件来响应Intent对象的请求,如果需要它启动这个组件的一个新的实例,并且把Intent对象传递给这个实例。

组件通过Intent过滤器来公布它们所具有的能力---组件所能响应的Intent对象的类型。因此Android系统在启动组件之前,必须了解组件能够处理那些Intent对象,Intent过滤器要在清单文件的元素中指定。

明确命名目标组件的Intent对象,会激活那个组件,过滤器并不扮演一个角色,但是如果没有指定目标组件名称的Intent对象要想激活一个组件,那么它必须能够通过这个组件的一个过滤器来传递。

图标和标题

许多元素有icon和label属性,这两个属性能够声明显示给用户的小图标和文本标签。还有一些属性有description属性,这个属性值用于在屏幕上显示一些比较长的解释性的文本。例

元素就有这三个属性,这样在用户询问是否授予应用程序所请求权限时,就可以用一个icon代表权限、label代表权限名称、description来详细说明权限的内容,并把这些信息展示给用户。

在任何情况下,在容器型元素中设置的icon和label都会成为它所包含的所有子元素的默认的icon和label设置。这样,在元素中设置的icon和label属性值就会成为每个应用程序组件的默认icon和label值。针对一个组件的icon和label设置也会有同样的效果---例如,一个元素中设置的icon和label属性值,会成这个中每个元素的默认设置。如果元素设置了一个label属性,但是元素以及它的都没有设置这个属性,那么这个元素的label属性值会作为元素的label属性的默认值。

给Intent过滤器设置的icon和label属性被用于代表一个组件,不管什么时候,过滤器都会用这两个属性来向用户展示组件所能满足的功能。例如,带有android.intent.action.MAIN和https://www.360docs.net/doc/4f15310734.html,UNCHER操作的一个过滤器,会把对应的Activity做应用程序的启动界面来处理,也就是说,它应该作为Android应用程序启动器中一个应用程序来显示,因此这个过滤器中的icon和label的属性设置应该显示在Launcher中。

权限

permission是一种约束,它限制了对设备上的数据或部分代码的访问。施加权限是为了保护关键的数据和代码不被滥用,防止给用户带来不好的用户体验。

每种权限都会有一个唯一的标签来标识。通常,标签指明了要约束的操作。例如:

android.permission.CALL_EMERGENCY_NUMBERS

android.permission.READ_OWNER_DATA

android.permission.SET_WALLPAPER

android.permission.DEVICE_POWER

一个功能能够通过多个权限来施加保护。

如果应用程序需要访问一个被权限保护的功能,那么它必须在清单文件中用元素来声明其要求的权限。然后,在应用程序被安装到设备上时,Android安装器会通过检查应用程序的数字证书,以及询问用户,来确定是否要授予应用程序所请求的权限。如果权限请求被接受,那么应用程序就能够使用被保护的功能,否则,在试图访问那些受保护的功能时就会失败,而且不会给用户任何提示。

应用程序也可以有保护它自己的组件(Activity、Service、Broadcast Receiver、Content Provider)。通常可以利用Android系统中定义的权限(在android.Manifest.permission类中列出的权限),也可以利用其它应用程序声明的权限,还可以定义自己的权限。用

元素来声明一个新的权限。例如,一个Activity可以通过下列方法来保护:

. . .

android:permission="com.example.project.DEBIT_ACCT"

. . . >

. . .

要注意的是,在这个例子中,不仅使用元素声明了一个DEBIT_ACCT权限,而且还用元素申请了一个DEBIT_ACCT权限。为了让应用程序的其他组件能够启动这个被保护的Activity,即使这种保护是应用程序自己施加的,也必须要这样申请。

在同一个例子中,如果permission属性设置了另外一种权限(如

android:permission.CALL_EMERGENCY_NUMBERS),那么就没有必要再用元素来声明它了。但是依然有必要使用元素来进行必要的申请。

元素为一组在代码中定义的权限声明了一个命名空间,并且元素为这个权限组定义了一个标签,这个标签在向用户展示权限时,只会影响到权限的分组。元素没有指定哪个权限属于该组,它只是给出了一个组名。一个权限通过比较元素的permissionGroup属性值来确定其分组。

外部类库

每个应用程序都会链接默认的Android类库,包括构建程序的基本程序包(如,Activity、Service、Intent、View、Button、Application、ContentProvider等等)。

但是,有些包会驻留在它们自己的类库中,如果应用要使用这些包中的代码,就必须明确的要求链接这些类库。对于每个要链接的类库,清单文件中必须包含单独的元素。

AndroidManifest.xml文件详解(action)

语法(SYNATX):

包含于(CONTAINED IN):

说明(DESCRIPTION):

给Intent过滤器添加一个操作。一个元素必须包含一个或多个元素,如果一个也没有包含,那么就不会有Intent对象通过过滤器。

属性(ATTRIBUTES):

android:name

它定义了操作的名称。在Intent类中用ACTION_string常量定义一些标准的操作。要把这些操作跟这个属性关联,就要把前置的ACTION_字符串换成“android.intent.action.”。例如,对于ACTION_MAIN操作,要使用android.intent.action.MAIN来作为属性值,对于

ACTION_WEB_SEARCH操作,要使用android.intent.action.WEB_SEATCH来作为属性值。对于自定义的操作,最好使用包名来作为前缀,以确保唯一性。例如,TRANSMOGRIFY操作可以像下例这样定义:

引入版本(INTRODUCED IN):

API级别 1

AndroidManifest.xml文件详解(activity)(一)

语法(SYNATX):

android:alwaysRetainTaskState=["true" | "false"]

android:clearTaskOnLaunch=["true" | "false"]

android:configChanges=["mcc", "mnc", "locale",

"touchscreen", "keyboard", "keyboardHidden",

"navigation", "screenLayout", "fontScale", "uiMode",

"orientation", "screenSize", "smallestScreenSize"] android:enabled=["true" | "false"]

android:excludeFromRecents=["true" | "false"]

android:exported=["true" | "false"]

android:finishOnTaskLaunch=["true" | "false"]

android:hardwareAccelerated=["true" | "false"]

android:icon="drawable resource"

android:label="string resource"

android:launchMode=["multiple" | "singleTop" |

"singleTask" | "singleInstance"]

android:multiprocess=["true" | "false"]

android:name="string"

android:noHistory=["true" | "false"]

android:permission="string"

android:process="string"

android:screenOrientation=["unspecified" | "user" | "behind" |

"landscape" | "portrait" |

"reverseLandscape" | "reversePortrait" |

"sensorLandscape" | "sensorPortrait" |

"sensor" | "fullSensor" | "nosensor"]

android:stateNotNeeded=["true" | "false"]

android:taskAffinity="string"

android:theme="resource or theme"

android:uiOptions=["none" | "splitActionBarWhenNarrow"]

android:windowSoftInputMode=["stateUnspecified",

"stateUnchanged", "stateHidden",

"stateAlwaysHidden", "stateVisible",

"stateAlwaysVisible", "adjustUnspecified",

"adjustResize", "adjustPan"] >

. . .

包含于(CONTAINED IN):

能够包含的元素(CAN CONTAIN):

说明(DESCRIPTION):

这个元素声明了一个Activity(或Activity的子类),Activity实现了应用程序的可视化用户界面部分。应用程序中所有的Activity都必须在清单文件中用元素来声明,没有在清单文件中声明的Activity,系统不会看到,也不会运行它。

属性(ATTRIBUTES):

android:allowTaskReparenting

这个属性用于设定Activity能够从启动它的任务中转移到另一个与启动它的任务有亲缘关系的任务中,转移时机是在这个有亲缘关系的任务被带到前台的时候。如果设置了true,则能够转移,如果设置了false,则这个Activity必须要保留在启动它的那个任务中。

如果这个属性没有设置,那么其对应的元素的allowTaskReparenting属性值就会应用到这个Activity上。它的默认值是false。

通常,当Activity被启动时,它会跟启动它的任务关联,并它的整个生命周期都会保持在那个任务中。但是当Activity的当前任务不在显示时,可以使用这个属性来强制Activity转移到与当前任务有亲缘关系的任务中。这种情况的典型应用是把应用程序的Activity转移到与这个应用程序相关联的主任务中。

例如,如果一个电子邮件消息中包含了一个网页的链接,点击这个链接会启动一个显示这个网页的Activity。但是,由e-mail任务部分启动的这个Activity是由浏览器应用程序定义的。如果把它放到浏览器的任务中,那么在浏览器下次启动到前台时,这个网页会被显示,并且在e-mail任务再次显示时,这个Activity有会消失。

Activity的亲缘关系是由taskAffinity属性定义的。通过读取任务的根Activity的亲缘关系来判断任务的亲缘关系。因此,通过定义,任务中的根Activity与任务有着相同的亲缘关系。因此带有singleTask或singleInstance启动模式的Activity只能是任务的根节点,Activity的任务归属受限于standard和singleTop模式。

android:alwaysRetainTaskState

这个属性用于设置Activity所属的任务状态是否始终由系统来维护。如果设置为true,则由系统来维护状态,设置为false,那么在某些情况下,系统会允许重设任务的初始状态。默认值是false。这个属性只对任务根节点的Activity有意义,其他所有的Activity都会被忽略。通常,在某些情况中,当用户从主屏中重新启动一个任务时,系统会先清除任务(从堆栈中删除根节点Activity之上的所有Activity)。

但是,当这个属性被设置为true时,用户会始终返回到这个任务的最后状态,而不管中间经历了哪些操作。这样做是有好处的,例如,Web浏览器的应用就会保留很多用户不想丢失的状态,如多个被打开的标签页。

android:clearTaskOnLaunch

这个属性用于设定在从主屏中重启任务时,处理根节点的Activity以外,任务中的其他所有的Activity是否要被删除。如果设置为true,那么任务根节点的Activity之上的所有Activity 都要被清除,如果设置了false,就不会被清除。默认设置时false。这个属性只对启动新任务(或根Activity)的那些Activity有意义,任务中其他所有的Activity都会被忽略。

当这个属性值被设置为true,用户再次启动任务时,任务根节点的Activity就会被显示,而不管在任务的最后做了什么,也不管任务使用Back按钮,还是使用Home离开的。当这个属性被设置为false时,在某些情况中这个任务的Activity可以被清除,但不总是这样的。例如,假设某人从主屏中启动了Activity P,并且又从P中启动了Activity Q。接下来用户按下了Home按钮,然后由返回到Activity P。通常用户会看到Activity Q,因为这是在P的任

务中所做的最后的事情。但是,如果P把这个属性设置为true,那么在用户按下Home按钮,任务被挂起时,Activity P之上的所有Activity(本例中是Activity Q)都会被删除。因此当用户再次返回到本任务时,用户只能看到Activity P。

如果这个属性和allowTaskReparenting属性都被设置为true,那些被设置了亲缘关系的Activity会被转移到它们共享的亲缘任务中,然后把剩下的Activity都给删除。

url:https://www.360docs.net/doc/4f15310734.html,/archive/2012/05/08/AndroidManifest-

xml.html

AndroidManifest.xml文件综合详解

一,重要性

AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。

因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示:

二,主要功能

它指定了该应用程序的Java包:该包名作为应用程序的一个独特标识。

它描述了应用程序组件:该应用程序由哪些activity,service,broadcast receiver和content provider 组成。它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。这些声明使Android系统知道这儿有什么组件以及在什么条件下它们可以被载入。

它决定那些进程将容纳应用程序组件。

它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。

它也声明了其他应用程序在和该应用程序交互时需要持有的许可。

它列出了Instrumentation类,可以在应用程序运行时提供简档和其他信息。这些声明仅当应用程序在开发和测试过程中被提供;它们将在应用程序正式发布之前被移除。

它声明了该应用程序所需的Android API的最小化水平。

它列出了该应用程序必须链接的库。

三,主要结构及规则

下面列表显示了manifest文件的通常的结构以及它可以含有的元素。每个元素,连同它的所有属性,会在各个单独的文档里进行充分的描绘。

//根节点,描述了package中所有的内容

//请求你的package正常运作所需赋予的安全许可。一个manifest能包含零个或更多此元素

//声明了安全许可来限制哪些程序能使用你的package中的组件和功能。一个manifest能包含零个或更多此元素

//声明了用来测试此package或其他package指令组件的代码。一个manifest能包含零个或更多此元素

//指定当前应用程序兼容的最低sdk版本号

//包含package中application级别组件声明的根节点。此元素也可包含application 中全局和默认的属性,如标签,icon,主题,必要的权限,等等。一个manifest能包含零个或一个此元素(不允许多余一个)

//用来与用户交互的主要工具。当用户打开一个应用程序的初始页面时一个activity,大部分被使用到的其他页面也由不同的activity所实现并声明在另外的activity标记中。

//声明了指定的一组组件支持的Intent值

. . .

//Service是能在后台运行任意时间的组件

. . .

//IntentReceiver能使你的application获得数据的改变或者发生的操作,即使它当前不在运行

. . .

//ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件

下面是按照字母顺序排列的所有可以出现在manifest文件里的元素。它们是唯一合法的元素;你不能加入你自己的元素或属性。

说明:AndroidManifest.xml文件的结构、元素,以及元素的属性,可以在Android SDK文档中查看详细说明。而在看这些众多的元素以及元素的属性前,需要先了解一下这些元素在命名、结构等方面的规则:元素:在所有的元素中只有是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。

属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素的属性,所有其他元素属性的名字都是以android:前缀的;

定义类名:所有的元素名都对应其在SDK中的类名,如果你自己定义类名,必须包含类的数据包名,如果类与application处于同一数据包中,可以直接简写为“.”;

多数值项:如果某个元素有超过一个数值,这个元素必须通过重复的方式来说明其某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;

资源项说明:当需要引用某个资源时,其采用如下格式:@[package:]type:name。例如

字符串值:类似于其他语言,如果字符中包含有字符“\”,则必须使用转义字符“\\”;

四,详细说明

值得一提一些常用之处:

1,几乎所有的AndroidManifest.xml(以及许多其他Android的xml的文件)在第一个元素中包含了命名空间的声明xmlns:android="https://www.360docs.net/doc/4f15310734.html,/apk/res/android"。这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

2,大部分manifests包含了单个的元素,它定义了所有的application级别组件和属性,并能在package中使用。

3,任何被用户看作顶层应用程序,并能被程序启动器所用的package,需要包含至少一个Activity组件来支持MAIN操作和LAUNCHER种类。动作android.intent.action.MAIN指示这是应用程序的入口点。类别https://www.360docs.net/doc/4f15310734.html,UNCHER将此Activity放在启动器窗口中。

在最外层的中包含了包名如package="cn.androidlover.demo" 、软件的版本号android:versionCode="1" 以及android:versionName="1.0"的属性,而里面一层的分支中将可能包含Android程序的四种对象Activity、Service、Content Provider以及Receiver。我们每添加上面四个类型中的任一种新对象都需要在androidmanifest.xml文件中添加相应节点,否则运行时将会产生异常。每一个activity必须要一个标记对应,无论它给外部使用或是只用于自己的package 中。如果一个activity没有对应的标记,你将不能运行它。

此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个activity(或者操作系统)要执行一个操作,例如:打开网页或联系簿时,它创建出一个intent的对象。它能承载一些信息描述了你想做什么,你想处理什么数据,数据的类型,和一些其他信息。Android比较了intent对象中和每个application所暴露的intent-filter中的信息,来找到最合适的activity来处理调用者所指定的数据和操作。关于intent的更多信息请访问Intent参考页面。

application属性介绍:

有关AndroidManifest.xml文件的application分支我们有必要了解一些常见的属性,这里可以看到一些我们实用的选项,比如允许调试android:debuggable、任务关系android:taskAffinity,比如我们常见的方式创建一个新的任务实用标记FLAG_ACTIVITY_NEW_TASK,为程序制定一个主题,可以使用android:theme指向一个主题文件。平时我们创建的程序使用一些安全敏感项,会需要请求系统许可权限,这里可以使用android:permission来制定相关的许可,每个程序的service、activity、content provider、receiver都需要在application的节点内实现。有关完整的属性可以查看:

1

2 android:allowT askReparenting=["true" | "false"]

3 android:debuggable=["true" | "false"]

4 android:description="string resource"

5 android:enabled=["true" | "false"]

6 android:hasCode=["true" | "false"]

7 android:icon="drawable resource"

8 android:label="string resource"

9 android:manageSpaceActivity="string"

10 android:name="string"

11 android:permission="string"

12 android:persistent=["true" | "false"]

13 android:process="string"

14 android:taskAffinity="string"

15 android:theme="resource or theme" >

16 . . .

17

另外:Activity的属性常用的可能为android:name和android:label两个,但我们需要了解所有的属性以帮助解决复杂的问题,完整的如下:

?android:allowT askReparenting=["true" | "false"]

?android:alwaysRetainT askState=["true" | "false"]

?android:clearT askOnLaunch=["true"" | "false"]

?android:configChanges=[one or more of: "mcc" "mnc" "locale" "touchscreen"

"keyboard" "keyboardHidden" "navigation" "orientation" "fontScale"] ?android:enabled=["true" | "false"]

?android:excludeFromRecents=["true" | "false"]

?android:exported=["true" | "false"]

?android:finishOnT askLaunch=["true" | "false"]

?android:icon="drawable resource"

?android:label="string resource"

?android:launchMode=["multiple" | "singleTop" | "singleT ask" | "singleInstance"]

?android:multiprocess=["true" | "false"]

?android:name="string"

?android:noHistory=["true" | "false"]

?android:permission="string"

?android:process="string"

?android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nonsensor"]

?android:stateNotNeeded=["true" | "false"]

?android:taskAffinity="string"

?android:theme="resource or theme"

?android:windowSoftInputMode=[one or more of: "stateUnspecified" "stateUnchanged"

"stateHidden" "stateAlwaysHidden" "stateVisible" "stateAlwaysVisible"

"adjustUnspecified" "adjustResize" "adjustPan"]

?

从Provider节点中用到的定义,可以看到包含了权限控制、排序方式完整的如下:

1

2 android:enabled=["true" | "false"]

3 android:exported=["true" | "false"]

4 android:grantUriPermissions=["true" | "false"]

5 android:icon="drawable resource"

6 android:initOrder="integer"

7 android:label="string resource"

8 android:multiprocess=["true" | "false"]

9 android:name="string"

10 android:permission="string"

11 android:process="string"

12 android:readPermission="string"

13 android:syncable=["true" | "false"]

14 android:writePermission="string" >

15

而对于服务相关定义如下:

1

2 android:exported[="true" | "false"]

3 android:icon="drawable resource"

4 android:label="string resource"

5 android:name="string"

6 android:permission="string"

7 android:process="string" >

8

最后是Broadcast使用的Receiver定义,一般配合和隐式处理。

1

2 android:exported=["true" | "false"]

3 android:icon="drawable resource"

4 android:label="string resource"

5 android:name="string"

6 android:permission="string"

7 android:process="string" >

8

总之,AndroidManifest.xml文件虽然看起来复杂,但是,只要我们理清中里面各元素的作用,那么一切就变得简单了。

wmi文档

问题1:WMI 是什么,它能帮我做什么? Windows 管理规范(Windows Management Instrumentation)是一项核心的Windows 管理技术;用户可以使用WMI 管理本地和远程计算机。WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。例如,用户可以: ?在远程计算机器上启动一个进程。 ?设定一个在特定日期和时间运行的进程。 ?远程启动计算机。 ?获得本地或远程计算机的已安装程序列表。 ?查询本地或远程计算机的Windows 事件日志。 WMI 中的“Instrumentation”特指WMI 可以获得关于计算机内部状态的信息,这与汽车仪表盘获得并显示引擎的状态信息非常类似。WMI 对磁盘、进程、和其他Windows 系统对象进行建模,从而实现“指示”功能。这些计算机系统对象采用类来建立模型,例如Win32_LogicalDisk 或Win32_Process;如您所料,Win32_LogicalDisk 类用于建立在计算机上安装的逻辑磁盘的模型,Win32_Process 类用于建立正在计算机上运行的任何进程的模型。这些类基于一个名为通用信息模型(Common Information Model,CIM)的可扩展架构。CIM 架构是分布式管理任务组(Distributed Management Task Force)的一个公开标准( https://www.360docs.net/doc/4f15310734.html,). WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示等等。 想进一步了解WMI,请访问https://www.360docs.net/doc/4f15310734.html,/library/default.asp并搜索关键词“About WMI”。 返回页首 问题2:WMI 适用于那些平台? WMI 适用于所有最新版本的Windows。WMI 附带在Windows Me、Windows 2000、Windows XP 和Windows Server 2003 之中。 对于Windows 98 和Windows NT 4.0,可以访问https://www.360docs.net/doc/4f15310734.html,/downloads. 并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。 注意:在Windows NT 4.0 上安装并运行WMI 之前,需要首先安装Service Pack 4 或更高版本。 WMI 需要的其他软件包括: 1. Microsoft? Internet Explorer 5.0 或更高版本。 2. Windows Script Host(WSH)。Windows 2000、Windows XP、Windows Server 2003、和Windows Me 附 带的WSH,而不是Windows NT4 或Windows 98 附带的WSH。您可以从以下地址下载WSH https://www.360docs.net/doc/4f15310734.html,/downloads. WSH 的最新版本——包括在Windows XP 和Windows Server 2003 之中——是WSH 5.6。 返回页首 问题3:如果WMI 向外界暴露特定的功能,我如何才能知道? MSDN 是了解WMI 及其功能的详细参考信息的最佳场所;请参考以下地址获取WMI 参考信息:https://www.360docs.net/doc/4f15310734.html,/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp. WMI 参考中包含了关于WMI 标准安装中大多数类、对象和API 的信息。注意:不属于操作系统一部分的WMI 提

谷歌地球KML文件制作工具

谷歌地球KML文件制作工具 一、项目背景 Google earth作为一款免费的地图软件,能形象的展示各地地形、海拔、建筑物、道路、河流等信息,目前在无线网络优化中起到非常重要的作用,例如:新建站规划、投诉处理、天线方向调整等等。本软件能将基站site文件、路测文件制作成Google earth 使用的kml文件,直观形象的反应到谷歌地球上。该软件对文件格式要求灵活,不用劳神费力地去整理文件内容,只要文件中包含所需信息即可使用,而且操作简单,运行速度快,在使用过程中取得了巨大的经济效益,具有较好的应用前景及推广价值。 二、实施方案 (一)数据准备 1.基站扇区数据准备 包含基站名称、小区名称、基站经纬度、小区方向角、小区半功率角的文本文件均可,各个字段间以制表符“tab”隔离,可以直接将excel文件里的内容粘贴到文本文件即可。其中经纬度格式均为小数格式,如:122.324445,37.32343,小区方向角和半功率角均为整数比如:0 120 360。以爱立信site文件为例: 2.路测数据准备 路测数据必须要包含经度,纬度和需要染色的信息,文件格式为爱立信TEMS 导出fmt文件或者文本文件均可,各个字段间以制表符“TAB”隔离,经纬度格式为小数格式,需要染色的信息量必须为整数,如:-90,-67等。例如爱立信

TEMS导出fmt文件: 3.简单地标数据准备 只需要文本文件中包含地标名,经度和纬度即可,各字段以制表符“TAB”分隔。经纬度必须为小数格式。 (二)Kml文件生成 该软件为C#语言编写,出于操作方便、简洁的考虑,所有功能集中在一个 界面上,通过依次点击不同的按钮实现相应的功能,最终导出kml文档。 1.基站扇区kml文件生成 操作流步骤及注意事项: 第一步:点击“存盘目录”行最后按钮,弹出保存文件对话框,保存文件对话框的文件名不要更改也不要填写,只是起到选择目录的作用,“确定”即可,kml文件存盘目录设置成功。 第二步:点击“site文件”行最后按钮,弹出选择文件对话框,选择相应的site文件即可。 第三步:site文件选择后,软件将会读取该文件第一行作为标题行,在以下

利用wmic对Windows主机批量执行脚本

利用wmic对Windows主机批量执行脚本 2014年11月13日 AM 10:53 与类Unix操作系统相比较,Windows系统由于对字符界面的支持不完善,并没有与类Unix系统的shell可以相提并论的工具(cmd的命令行特性难用程度与 shell相比简直令人发指,虽然目前Windows推出所谓的PowerShell,但要跟上bash、korn shell等前辈还需要时间来沉淀)。一直以来,对于Windows进行批量管理大多依靠于图形界面,效率低下且可靠性不足。 其实Windows本身提供了WMI管理规范和接口,专用于支持命令行方式的系统管理,更推出wmic工具来给系统管理员使用,以下是百度百科对于wmic的介绍:WMIC扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。WMIC改变了这种情况,为WMI名称空间提供了一个强大的、友好的命令行接口。 概念的介绍总是容易让读者云里雾里,以下试验将演示如何使用wmic以及Windows共享功能来对批量服务器执行一个离线安全扫描脚本并取回结果。 试验背景: 现需要对批量Windows Server服务器进行离线安全扫描,即登录到每一台服务器执行一个vbs脚本,脚本会生成扫描结果文件,然后将结果文件下载到本地。倘若服务器数量不多,那么一台台登录执行也就罢了,但当目标服务器数量达到一定数量后,再手工进行此操作,就成为一件繁琐重复的工作。有人说,懒惰是推动人类文明不断进步的源动力。所以为了偷懒,不,为了人类文明的进步,这个工作必须使用批量和自动化的工具来完成。 实现思路: 将此工作分解为以下步骤,逐一实现: 1、登录Windows Server服务器; 2、上传扫描脚本到目标服务器; 3、执行扫描脚本; 4、下载结果文件; 5、对其他服务器重复前4个步骤。 第1步的登录服务器,传统来说,肯定是使用远程桌面了,但如前面所说,图形界面的东西,要进行批量操作是很麻烦的。那自然要使用字符界面来进行登录了,再自然地想到telnet方式是最简便通用的协议。但现今所有负责任的系统或安全管理人员都会告诉你,想用telnet来连接我的服务器?门都没有!幸好wmic就提供了远程主机的管理接口,使用"wmic /node:IP地址 /user:帐号 /password:密码"的形式可以登录到远程主机执行wmic命令。第3步的执行脚本,其实与登录是同时进行的,此处结合第1、第3步,命令就是: wmic /node:IP地址 /user:帐号 /password:密码 process call create "cmd /c cmd命令或脚本" 第2和第4步,上传与下载,其实是同样的需求,如果开通了ftp之类的文件传输服务,自然简单。但当前环境并未开通ftp,所以考虑使用Windows的文件夹共享与网络映射来实现。首先在远端服务器使用wmic创建一个路径为c:\tempshare的共享目录,然后将其映射到本地的Z盘,再直接在Z盘上进行文件的读取。

python数据类型

Python 数据类型: 一数字: 1 基本的整数,浮点数的操作。 2 同时还支持进制,位操作和复数常量。不过我们一般编程的话,用到比较少。 二字符串: 1 单引号' 2 双引号'"" 单引号和双引号都是一样的,只是说在2着在嵌套的时候比较好。 比如sql 语句: sql = "select * from info where title='%s' % title 3 三引号''' ''' :三引号的话,主要是文章换行的时候用比较好。可以作为文章批量替换字符的方法。 4 unicode u':由于python 内部是unicode的编码,是中间编码。 ?unicode->其它编码 例如:a为unicode编码要转为gb2312。a.encode('gb2312') ?其它编码->unicode 例如:a为gb2312编码,要转为unicode. unicode(a, 'gb2312')或a.decode('gb2312') ?编码1 -> 编码2 可以先转为unicode再转为编码2 如gb2312转big5 unicode(a, 'gb2312').encode('big5') ?判断字符串的编码 ?如果一个字符串已经是unicode了,再执行unicode转换有时会出错(并不都出错) 可以写一个通用的转成unicode函数: def u(s, encoding): if isinstance(s, unicode): return s else: return unicode(s, encoding)

5 转义字符\s 支持的操作: 1 索引和切片。 索引: 比如a = "info" Print a[1] Print a[1:] 2 字符串格式化,基于字典和关键字替换,这个用处比较大。一般在格式化字符串的时候用到。 三列表 1 列表是有序的集合,类似别的语言的数组的概念。 支持的操作: 1 迭代。 2 插入,排序,翻转代码。 3 分片赋值。 四字典 字典的定义。 字典的常用操作:比如添加,修改,删除。 五元组 1 元组的定义,有序的集合 2 为什么要用元组,用户配置文件的地方。比如你希望文件的一些配置信息不希望被外面的代码修改的话,这个时候就可以用上元组了,比如django的setting.py就大量用到了元组,这样保证了只能在当前页面修改配置,而不是通过外面来修改变量,达到安全的目的。 六文件 文件的读写,迭代功能。 七集合 1 集合的添加,修改,删除功能。 2 集合的交集,并集和差集。 3 集合的应用,比如我现在需要获取一个URL列表的不重复的功能。 八数据类型的差别

用 wmic 从命令行加入域的问题

用wmic 从命令行加入域的问题 用wmic 从命令行加入域的问题 -------------------------------------------------------------------------------- Silence2007-04-07, 23:03:29 在XP 下,用WMIC 命令可以实现将计算机加入域或工作组。WMIC 的功能非常丰富,下面是与域有关的部分内容。 1. 加入域 wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="d https://www.360docs.net/doc/4f15310734.html," username="https://www.360docs.net/doc/4f15310734.html,\username" password="password" FJoinOptions=1 注: %COMPUTERNAME% 系统环境变量,内容是计算机名。 FJoinOptions=1 表示首次加入域,若不指定username 和password,则表示加入/修改工作组。FJoinOptions=32 表示允许加入一个新域,即使该计算机已经加入到了某个域。 2、退出域 wmic computersystem where Name="%COMPUTERNAME%" call UnJoinDomainOrWorkgroup userna me="https://www.360docs.net/doc/4f15310734.html,\username" password="password" 命令运行后会显示一个返回值,若值为零则表示成功。 我有上千台微机需要加入域,所以希望来个快捷的办法。这些天进行了多次试验,发现退出域命令1 00% 测试有效,而加入域命令却经常不成功,而且我一直没有发现什么规律。百思不得其解,特来论坛讨教。 测试环境:2000 Server + XP Pro SP2 -------------------------------------------------------------------------------- asap2007-04-08, 06:50:21 将FJoinOptions=3试试。2表示在server端创建computer account。没有试过Windows 2000 Server 下的自动加入;以前也是写的vbscript脚本这样作的;看MSDN上说这个的要求是这样的: Client Requires Windows Vista or Windows XP. Server Requires Windows Server "Longhorn" or Windows Server 2003. 也许这个就是问题所在?手动加入domain时,如果不成功时,也是需要在DC上建立computer账号的。 good luck! -------------------------------------------------------------------------------- G992007-04-08, 07:45:32 学习一下哈

基于WMIC和脚本实现对内网终端及设备的信息统计

基于WMIC和脚本实现对内网终端及设备的信息统计 摘要:随着电力企业信息化的不断深入发展,电力企业对信息化的依赖程度越 来越高,公司各种终端越来越多,给运维人员的设备台账治理带来了很大的难度。本文主要探讨利用wmic和脚本进行终端信息收集,提高运维人员的工作效率。 关键词:WMIC;脚本;终端信息 1 引言 建立详细的设备台账,是终端运维工作的基础,但随着电网的发展,公司各 类终端越来越多,给运维人员的设备台账治理带来了很大难度。微软Windows98 及以后的版本提供了WMIC功能,可快速查询系统软硬件及外接设备信息数据, 利用这一功能,使用宿主脚本及数据库技术,结合桌管系统策略下发功能,可提 高内外网终端及外接设备普查效率。 2 软件介绍 2.1 WMIC wmic是wmic命令行,作为WindowsXP的一部分发布的wmi命令行工具提 供一个到wmi接触结构的命令行接口。可以使用wmic.exex执行来自命令行的常 见wmi任务,包括浏览CIM和检查CIM类定义。 2.2 VB脚本 VBScript是Visual Basic Script的简称,即Visual Basic脚本语言,它是一种微 软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系 统中的元素,对系统进行管理。同时它又是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。如图2-1所示。 图2-1 2.3 北信源主机监控审计与补丁分发系统 北信源主机监控审计与补丁分发系统,以终端管理为核心,形成集主机监控审计、补丁 管理、桌面应用管理、信息安全管理、终端行为管控等终端安全行为一体的管理体系,为企 业管理者提供终端多位一体、同意管理的解决方案。 3 处理过程 3.1 前期准备 1)根据工作任务要求,收集合理的统计字段。 2)利用微软操作系统wbemtest工具在wmic中寻找相应的类别及对象,对相似相近的类 别 对象,根据要求进行合理的取舍。 3)根据确定的字段,在SQL Server数据库(或任何支持网络的关系型数据库)建立终端 计算机及外接设备数据表,并设置合理的字段属性。 3.2 编制脚本 1)编制并测试数据收集上报的宿主脚本程序,宿主脚本通过调用操作系统wmic管理功能,获取本机软硬件及外接设备数据后立刻上传服务器。 2)为更好的支持数据库,应采用VBScript或JavaScript脚本。 3)为最大化减少普查工作对终端用户的影响,宿主脚本或批处理在工作期间应以静默方 式运行。 3.3 下发策略 1)上传脚本至桌管系统,为确保数据库用户名、密码、ip等连接参数安全,不应该将明 文用户、密码、ip等变量直接写入脚本中,因为终端用户通过查看和截留脚本,可获取服务 器ip、端口、用户名、密码,采用加密的策略参数传递可以很好的解决这一安全性问题。

KML--基础入门

KML向导 KML是一种在Earth Browser(比如Google Earth,Google Maps,Google Maps for mobile)用于显示地理数据的文件格式。KML用使用一种可以嵌套元素和标记的结构并且基于XML标准。所有的这些标签都是大小写敏感的并且必须精确的出现在KML2.2Reference中. 这个参考手册指出哪些标记是可选的。在一个给定的元素中,标记必须按照Reference显示的顺序出现。 如果你是一个KML新手,可以阅读这篇文档并且使用这些例子来开始学习KML文件基本结构。第一部分描述了使用Google Earth软件来创建的特性。这些特征包括 placemarks,descripttions,ground overlays,paths和polygons。第二部分描述了使用一 个text editor来创建的特性。当一个文件存储使用kml或者kmz扩展名,google earth浏 览器知道怎样来显示它。 目录 基本的KML 文档 Placemarks Descriptive HTML in Placemarks Ground Overlays Paths Polygons 高级的KML文档 对于Geometry的styles 对于高亮的icons的styles 对于屏幕的覆盖图层 网络连接 KML MIME Types 一、基本KML文档 KML最简单的文档是那些可以直接在Google Earth发布的。也就是说,你不必在一个text editor中编辑或创建任何KML,像这些Placemarks,Descriptive HTML in Placemarks,Ground Overlays,Paths,Polygons元素可以直接在Google Earth中创建。

Wmic使用指南

14.Wmic使用指南 BIOS –基本输入/输出服务(BIOS) 管理 ::查看bios版本型号 wmic bios get Manufacturer,Name COMPUTERSYSTEM –计算机系统管理 ::查看系统启动选项,boot的内容 wmic COMPUTERSYSTEM get SystemStartupOptions ::查看工作组/域 wmic computersystem get domain ::更改计算机名abc为123 wmic computers ystem where “name=’abc’” call rename 123 ::更改工作组google为MyGroup wmic computersystem where “name=’google’” call joindomainorworkgroup “”,”",”MyGroup”,1 CPU –CPU 管理 ::查看cpu型号 wmic cpu get name DATAFILE –DataFile 管理

::查找e盘下test目录(不包括子目录)下的文件 wmic d atafile where “drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’” list ::查找e盘下所有目录和子目录下的文件,且文件大小大于1K wmic datafile where “drive=’e:’and FileName=’cc’and Extension=’cmd’and FileSize>’1000′”list ::删除e盘下文件大小大于10M的.cmd文件 wmic datafile where “drive=’e:’and Extension=’cmd’and FileSize>’′”call delete ::删除e盘下test目录(不包括子目录)下的非.cmd文件 wmic datafile where “drive=’e:’ and Extension<>’cmd’ and path=’test’” call delete ::复制e盘下test目录(不包括子目录)下的文件到e:\,并改名为wmic datafile where “drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’” call copy “e:\” ::改名c:\为c:\ wmic datafile “c:\\” call rename c:\ ::查找h盘下目录含有test,文件名含有perl,后缀为txt的文件 wmic datafile where “drive=’h:’ and extension=’txt’ and path like ‘%\\test\\%’ and filename like ‘%perl%’” get name DESKTOPMONITOR –监视器管理

python_数据类型

python 数据类型 python具有非常丰富的数据类型, 包括字符串,列表,元组,字典集合等,每种数据类型的特点都大一样,好好利用他们 可以让你的python编程变的非常轻松,要好好利用就应该充分了解他们的特点,下面对他们的特点进行一些总结。 python字符串: 字符串在python中是一个单个字符的字符串的序列,可以对字符串进行切片连接等相关操作。 下面是关于python字符串的一些文章: python 字符串替换 python字符串连接 python列表: 列表是一个任意数据类型组成的有序集合,有点像其它语言的数组,如果用过其它语言的朋友相信对它不会陌生,列表的操作非常 丰富,可以用dir来查看他自带的方法。 下面是关于python列表的一些文章: python列表 python列表操作方法

python元组: python元组和列表一样都是有序序列,所不同的是元组是不可变的类型,经常用在系统配置文件里,作为系统的配置信息,比较安全和稳定,不容易轻易被改变。 下面是python元组的一些文章: python 元组 python字典: 字典是python对象中唯一的映射的类型,和数学的映射的关系差不多,其它的语言也有大概的数据类型,自带的方法也很多 下面是python字典的一些文章: python 字典: python 字典添加 python集合: python集合在其它的语言好像比较少见,做一些中间处理还是非常好的 下面是python集合的一些文章: python 集合 下面是一些朋友总结的。

共同点: 1、它们都是py的核心类型,是py语言自身的一部分。 核心类型与非核心类型 多数核心类型可通过特定语法来生成其对象,比如"spam"就是创建字符串类型的对象的表达式; 非核心类型需要内置函数来创建,比如文件类型需要调用内置函数open()来创建。 类也可以理解成自定义的非核心类型。 2、边界检查都不允许越界索引 3、索引方法都使用[] s = 'spam' print s[0] s = ['s', 'p', 'a', 'm'] print s[0] s = {'name':'bob', 'age':'12'} print s['name'] s = ('s', 'p', 'a', 'm') print s[0]

Python之数据类型讲解

Python之数据类型讲解 Number(数字)包括 int,long,float,double,complex String(字符串)例如:hello,"hello",hello List(列表)例如:[1,2,3],[1,2,3,[1,2,3],4] Dictionary(字典)例如:{1:"nihao",2:"hello"} Tuple(元组)例如:(1,2,3,abc) File(文件)例如:f = open(a.txt,rw) python 还可以引用C语言变量 import ctypes 可以通过help(ctypes)查看有多少个类型 这里介绍下指针类型 >>> n = ctypes.c_int(100) >>> p = ctypes.pointer(n) >>> print p <__main__.LP_c_long object at 0x01FF4EE0> >>> print n c_long(100) >>> p.contents

c_long(100) >>> ctypes.addressof(n) 33506168 >>> hex(33506168) 0x1ff4378 >>> ctypes.addressof(p.contents) 33506168 请注意ctypes.addressof(n)和ctypes.addressof(p.contents)的值才是相等的,而 >>> print p <__main__.LP_c_long object at 0x01FF4EE0> 表示的是p这个指针变量的地址在0x01FF4EE0 下面说下Python类型转换 ord() 将字符转换成ASCII chr() 将ASCII转换成字符 hex() 将整数转换成十六进制 oct() 将整数转换成八进制 bin() 将整数转换成二进制 还有其他的如int(),str()

WMIC详解

一、什么是WMIC? WMIC是扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,比如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要使用WMI管理系统是很困难的。WMIC改变了这种情况,为WMI名称空间提供了一个强大的、友好的命令行接口。 本文将主要介绍我在使用过程中的一些经验,本着实用主义的原则,过多的概念性的东西我就不多介绍了,在用到的时候我再进行一些解释。 和上面的官方定义比起来,还有一个更好理解的解释:WMIC,是一款命令行管理工具。使用WMIC,我们不但可以管理本地计算机,而且还可以管理同一Windows域内的所有远程计算机(需要必要的权限),而被管理的远程计算机不必事先安装WMIC,只需要支持WMI即可。WMIC有一个能够分析、解释和执行从命令行接收的别名(Alias)的引擎,它是一个可执行文件,名为WMIC.exe,这个文件通常位于“c:\windows\system32\wbem”文件夹中(支持WinXP和Win2003系统)。这样就比较好理解了吧,可以使用WMI管理远程计算机,是不是非常有吸引力呀! 二、WMIC能做什么? 可以使用WMIC实现如下的管理任务: 1、本地计算机管理 2、远程单个计算机管理 3、远程多个计算机管理 4、使用远程会话的计算机管理(如Telnet) 5、使用管理脚本的自动管理 三、简单的使用实例 1、运行WMIC 打开“开始”-“运行”栏,输入“WMIC”就可以启动wmic了,如图1。第一次运行时,会显示WMIC 正在安装,请稍等。几秒钟后就会出现如图2所示的命令提示符了。 2、初试WMIC下的命令 在窗口下输入●process●执行看看,结果如图3所示,列出了正在运行的进程和调用进程的路径。当然了,我们也可以输入●process list brief●来查看更详细的信息,比如进程名称、ID、优先级等。更重要的是,对于现在有些可以在任务管理器里隐藏进程的木马,要想在wmic里隐藏,可就没那么容易了,它会成为你查杀木马的好帮手。 现在只是知道了路径,如果怀疑某一进程,想查看它的详细信息又该怎么办呢?那输入●process name=‘jqs.exe’list full●就可以了,jqs是我安装java后新增加的一个进程,大家在测试时也可以选用别的,如图4。我们还可以使用以下命令来进程:●process where name=’jqs.exe’delete●,回车后就会提示我们是否删除,如图5。这里将delete换成“call terminate”也可以达到同样的效果。 在wmic下如何查看BIOS信息呢?我们输入●bios list full●,是使用的命令吧,不用重启电脑就可以知道你现在使用的电脑的BIOS信息了,如图6。 除此之外,wmic还有停止、暂停和运行服务的功能:启动服务startservice,停止服务stopservice,暂停服务pauseservice。具体的命令使用格式就是: ●Service where caption=”windows time” call stopservice●--停止服务 ●Service where caption=”windows time” call startservice●--启动服务 ●Service where name=”w32time” call stopservice●--停止服务,注意name和caption的

kml文件内容细观

火车.kml normal #sn_ylw-pushpin highlight #sh_ylw-pushpin0 火车 1

批处理中很有用的命令 WMIC

批处理中很有用的命令WMIC 最典型的用法 通过命令行中的一些内容查找程序 wmic process where"( (CommandLine LIKE '%_notepad_%') AND NOT(CommandLine LIKE '%_wmic_%' ) )" ?为了防止有'%notepad%'这样的环境变量, 所以使用了'%_notepad_%'这样的查询语法, 一般情况下, 直接使用'%notepad%'也是可以的. ?另外, 查询条件中LIKE操作符是不区分字符串的大小写的. 通过命令行中的一些内容结束程序 wmic process where"( (CommandLine LIKE '%_notepad_%') AND NOT(CommandLine LIKE '%_wmic_%' ) )"delete 参考 ?MSDN: ?Microsoft TechNet wmic 获取硬盘固定分区盘符: wmic logicaldisk where"drivetype=3"get name wmic 获取硬盘各分区文件系统以及可用空间: wmic logicaldisk where"drivetype=3"get name,filesystem,freespace wmic 获取进程名称以及可执行路径: wmic process get name,executablepath wmic 删除指定进程(根据进程名称): wmic process where name="qq.exe" call terminate

或者用 wmic process where name="qq.exe"delete wmic 删除指定进程(根据进程PID): wmic process where pid="123"delete wmic 创建新进程 wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe" 在远程机器上创建新进程: wmic /node:192.168.1.10/user:administrator /password:123456process call create cmd.exe 关闭本地计算机 wmic process call create shutdown.exe 重启远程计算机 wmic /node:192.168.1.10/user:administrator /password:123456process call create "shutdown.exe -r -f -m" 更改计算机名称 wmic computersystem where"caption='%ComputerName%'" call rename newcomputername 更改帐户名 wmic USERACCOUNT where"name='%UserName%'" call rename newUserName wmic 结束可疑进程(根据进程的启动路径) wmic process where"name='explorer.exe' and executablepath<>'%SystemDrive%\\windows\\explorer.exe'"delete wmic 获取物理内存 wmic memlogical get TotalPhysicalMemory|find /i /v "t" wmic 获取文件的创建、访问、修改时间 @echo off wmic datafile where name^="c:\\windows\\system32\\notepad.exe"get CreationDate^,LastAccessed^,LastModified wmic 全盘搜索某文件并获取该文件所在目录 wmic datafile where"FileName='qq' and extension='exe'"get drive,path for/f "skip=1 tokens=1*"%i in('wmic datafile where "FileName='qq'

Windows 不常见的 wmic 命令

基本输入/输出服务 (BIOS) 管理 ::查看bios版本型号 wmic bios get Manufacturer,Name COMPUTERSYSTEM - 计算机系统管理 ::查看系统启动选项,boot的内容 wmic COMPUTERSYSTEM get SystemStartupOptions ::查看工作组/域 wmic computersystem get domain ::更改计算机名abc为123 wmic computersystem where "n ame=’abc’" call rename 123 ::更改工作组google为MyGroup wmic computersystem where "name=’google’" call joindomainorworkgroup "","","MyGroup" ,1 CPU - CPU 管理 ::查看cpu型号 wmic cpu get name DATAFILE - DataFile 管理 ::查找e盘下test目录(不包括子目录)下的cc.cmd文件 wmic datafile where "drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’" list ::查找e盘下所有目录和子目录下的cc.cmd文件,且文件大小大于1K wmic datafile where "drive=’e:’ and FileName=’cc’ and Extension=’cmd’ and FileSize>’100 0’" list ::删除e盘下文件大小大于10M的.cmd文件 wmic datafile where "drive=’e:’ and Extension=’cmd’ and FileSize>’10000000’" call delete ::删除e盘下test目录(不包括子目录)下的非.cmd文件 wmic datafile where "drive=’e:’ and Extension<>’cmd’ and path=’test’" call delete ::复制e盘下test目录(不包括子目录)下的cc.cmd文件到e:\,并改名为aa.bat wmic datafile where "drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’" call copy "e:\aa.bat" ::改名c:\hello.txt为c:\test.txt wmic datafile "c:\\hello.txt" call rename c:\test.txt ::查找h盘下目录含有test,文件名含有perl,后缀为txt的文件 wmic datafile where "drive=’h:’ and extension=’txt’ and path like ’%\\test\\%’ and filename li ke ’%perl%’" get name DESKTOPMONITOR - 监视器管理 ::获取屏幕分辨率 wmic DESKTOPMONITOR where Status=’ok’ get ScreenHeight,ScreenWidth DISKDRIVE - 物理磁盘驱动器管理 ::获取物理磁盘型号大小等 wmic DISKDRIVE get Caption,size,InterfaceType ENVIRONMENT - 系统环境设置管理 ::获取temp环境变量 wmic ENVIRONMENT where "name=’temp’" get UserName,VariableValue

将数据写入KML文件

将CPoint结构写入KML文件中,使用文件流提高速度。 1、需包含” fstream”文件 #include 2、例子: void WriteToKML(char *filename,vector sourcedata) { ofstream o_file; o_file.open(filename,ios::trunc|ios::binary); o_file<<"\r\n"; o_file<<"\r\n"; o_file<<"\r\n"; o_file<<""; o_file<\r\n"; o_file<<"\r\n"; o_file<<"\r\n"; o_file<<"Flight Path\r\n"; o_file<<"Flight Route path\r\n"; o_file<<"#yellowLine\r\n"; o_file<<"1"; o_file<<"0"; o_file<<"\r\n"; o_file<<"1\r\n"; o_file<<"1\r\n"; o_file<<"absolute\r\n"; o_file<<"\r\n"; int numb = sourcedata.size(); int count; for (count=0;count < numb;count++) { o_file<\r\n \r\n \r\n"; o_file<<"\r\n "; o_file.close(); }

相关文档
最新文档