博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vbs脚本编程简明教程之十三
阅读量:5902 次
发布时间:2019-06-19

本文共 4024 字,大约阅读时间需要 13 分钟。

Vbs
脚本编程简明教程之十三——
1<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

WMI基础之一

 

WMI
Windows 
管理规范,是用户管理本地和远程计算机的一种模型。通过它可以访问、配置、管理和监视几乎所有的
 Windows 
资源。
WMI
的语法十分简单,基本上常见的命名空间、对象等用几乎一模一样。它对应的是
Windows
里的
WMI
服务(
winmgmt
)。

一、
WMI
的起源

几年前,几家资深的计算机公司由于系统管理领域缺少标准,委托
DMTF
启动了
CIM
(通用信息模型)项目,理想的
CIM
是一种不受限制于任何特定实现环境的管理工具。
WMI
CIM
的微软实现,它有很多类是从
CIM
中派生出来的。

二、
WMI
的命名空间

那么命名空间是做什么作用的呢?我简单这样说,在同一段代码中,如果有两个变量或函数的名字完全相同,就会出现冲突。命名空间就是为解决变量、函数的命名冲突而服务的。解决的办法就是将你的变量定义在一个不同名字的命名空间中。就好像财政局有个张三,公安局也有个张三,但我们清楚,就是因为他们分属不同的单位。有些地方可能不太准确,但大致意思就是这样了。

WMI
的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。

1
  root-
作为所有其他名字的占位符;

2
  root\default-
与注册表操作有关的类;

3
  root\security-
与系统安全有关的类;

4
  root\cimv2-
CIM
派生的类,代表我们最常用的工作环境。

三、
WMI
的对象路径

WMI
的对象路径用来在
CIM
库中定位类和它的事例,对象路径用两个反斜杠
\\
开头,第一个元素是目标计算机的名字,第二个元素是相应的
WMI
命名空间,第三个元素是相应的类名,并用
 
 
将它与命名空间分隔开来。例如:
\\..\root\cimv2:win32_service

其中那个
 . 
代表是本地系统。

四、
WMI
的查询语言——
WQL
仅仅是
ANSI SQL
的一个子集,只能用于数据的提取。

数据、事件查询的基本语法为:

Select pro1 , pro2 , pro3  from myclass
myclassevent

例如:
Select name , path from Win32_share  
说明:列出所有共享的名称和路径

也可以使用通配符
 * 
,例如:
Select * from Win32_share

关键字
Where 
用于限定查询的范围。

例如:
Select * from Win32_share where name=
Admin

五、
WMI
脚本中使用的三个步骤

步骤
 1
:连接到
 WMI 
服务

在任何
 WMI 
脚本中,第一个步骤都是建立一个到目标计算机上的
 Windows 
管理服务的连接。方法是调用
 VBScript 
 Getobject 
函数并将
 WMI 
脚本库的名字对象的名称(即“
winmgmts:
”,后跟目标计算机的名称)传递到
 Getobject
,并返回一个对象的引用,此时,您就可以调用其提供的方法如:
InstancesOf
,正如方法名所示,
InstancesOf 
返回由资源的类名标识的托管资源的所有实例。

步骤
 2
:检索
 WMI 
托管资源的实例

一般采用
WQL
来实现。

步骤
 3
:显示
 WMI 
托管资源的属性

最后一个步骤是枚举
 
检索得到集合的内容。一般采用

For each enum in  myclass

……

Next       
结构来实现。

六、
WMI 
测试器
 (wbemtest.exe)
验证脚本执行结果

现在,您对可用于浏览和查看
 CIM 
的工具已经有了一些认识,让我们使用
 WMI 
测试器
 (wbemtest.exe) 
来检查
 Win32_Process 
类定义,以便从在您的本地计算机上运行的进程检索一些属性。

1.
打开一个命令提示,键入
 C:\>wbemtest.exe
,按下
 Enter 
来开始
 WMI 
测试器工具。请注意,大部分按钮在主
 WMI 
测试器窗口上是被禁用的,这说明此时您没有连接到
 WMI

2.
单击
 
“连接”按钮
 
连接到本地或远程计算机上的
 WMI 
服务。显示“连接”对话框,它提供一个标记为
 
名称空间
 
的文本输入区域,该区域默认值为
 root\default
。将
 
名称空间
 
区域的值更改为
 root\cimv2
,单击“连接”对话框的
 
连接
 
按钮返回到主
 WMI 
测试器窗口。

3.
主窗口中左上角的命名空间标识符应该显示为
 root\cimv2
。请注意,所有的按钮现在都已启用,这说明在当前凭据环境下,您已经成功连接到本地主机上的
 WMI
。单击
 
枚举类别
 
打开“超类信息”对话框。

4.
在“超类信息”对话框中,不要填写
 
输入超类别名称
 
区域,单击
 
递归
 
选项,单击
 
确定
 
以枚举
 root\cimv2 
名称空间中定义的所有
 CIM 
类。

请注意,列于“查询结果”对话框顶部的类是以两个下划线为开头的。这些是系统类。系统类是预定义的
 CIM 
类,支持内部
 WMI 
配置与操作,例如提供程序注册、命名空间安全性及事件通知等。现在,忽略系统类,向下滚动“查询结果”对话框直至看到以
 CIM_ 
开头的类。名称以
 CIM_ 
开头的类是由
 DMTF 
维护的核心与公共基类。继续向下滚动直至到达以
 Win32_ 
开头的类。
 
名称以
 Win32_ 
开头的类是
 Microsoft 
扩展类,表示
 Windows 
特定的托管资源。如果这是您第一次检查
 root\cimv2 
命名空间,您可能希望熟悉
root\cimv2 
命名空间中的类的完整集合,尤其是有
 Win32_ 
前缀的类。

5.
向下滚动“查询结果”对话框直至到达
 Win32_Process 
类,双击该类名打开
 Win32_Process 
对话框的对象编辑器。

6.
“对象编辑器”对话框显示被选定类的定义和实现的详细信息(属性和方法)。选择
 Hide System Properties 
复选框隐藏系统属性。剩余的
 Win32_Process 
属性表示您可以从在本地或远程计算机上运行的进程检索的信息。

运行如下代码:

strComputer = "."  

Set wbemServices = Getobject("winmgmts:\\" & strComputer)

Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")

For Each wbemObject In wbemObjectSet

    WScript.Echo "Name:          " & wbemObject.Name      & vbCrLf & _

                 "   Handle:     " & wbemObject.Handle    & vbCrLf & _

                 "   Process ID: " & wbemObject.ProcessID

Next

7.
在运行脚本之后,您可以用
 WIMI 
测试器验证脚本的结果。在
 Win32_Process 
对话框的对象编辑器中,单击
 Instances
。产生的查询结果对话框列出在计算机上运行的进程的实例。双击一个指定的进程实例,查看该实例的详细信息。

 

Vbs
脚本编程简明教程之十三——
2

WMI基础之二—阻止客人运行你不想运行的程序

 

 

很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,比如说
QQ
,又是聊天,又是下载表情,不过一会,流氓插件、病毒、木马已经盘踞了你的计算机,常常是忍痛将这个程序卸载,可是不知情的人很自觉的下载安装,使整个系统无法正常运行。

其实用
vbs
wmi
结合起来,使你的计算机上有相应的程序安装,别人又无法运行起来太容易了,现在给出代码:

On Error Resume Next    '
忽略所有的错误

Dim bag,pipe,honker,good

Do

good="."     '
定义为本地计算机

set bag=getobject("winmgmts:\\"& good &"\root\cimv2")     'l
连接到
cimv2
命名空间

set pipe=bag.execquery("select * from win32_process where name='qq.exe' or name='qqgame.exe' or name='winmine.exe'")    '
看,这是我的计算机上不允许运行的程序,
qq
qqgame
winmine
(扫雷)如果你还有其他的程序不允许运行,很简单,在其中添加
 or name='
你不允许运行的程序名
'

for each i in pipe

i.terminate()

msgbox "
发现盗版系统,现已进行功能限制!
" & vbcrlf & "
请使用正版软件!
",,"
微软提示
"    '
此行其实可有可无,有这行只是为了免去怀疑

next

wscript.sleep 60000    '
1
分钟检测一次

loop

那么如果我自己想运行这些程序该怎么办呢
,
很简单,
Ctrl+Alt+Del
三个键齐按,打开
windows
任务管理器,在进程中结束
Wscript.exe
wmiprvse.exe
进程的运行就可以了
本文转自 chengchow 51CTO博客,原文链接:http://blog.51cto.com/chengchow/886816,如需转载请自行联系原作者
你可能感兴趣的文章
Hadoop生态圈-Kafka的完全分布式部署
查看>>
[MODx] Build a CMP (Custom manager page) using MIGX in MODX 2.3 -- 1
查看>>
jQuery自动完成点击html元素
查看>>
[算法]基于分区最近点算法的二维平面
查看>>
webpack多页应用架构系列(七):开发环境、生产环境傻傻分不清楚?
查看>>
笨办法学C 练习1:启用编译器
查看>>
树的总结--树的性质(树的深度) leetcode
查看>>
nagios短信报警(飞信fetion20080522004-linrh4)
查看>>
【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!...
查看>>
linux 将大文件分成小文件
查看>>
CCNA- 距离矢量路由协议学习
查看>>
企业实践用户邮箱导入/导出(第2部分)
查看>>
如何学习Linux命令-初级篇
查看>>
从Oracle Public Yum为Oracle Linux建立本地的Yum源
查看>>
静态路由和默认路由
查看>>
关于阿里开发者招聘节 |这5道笔试真题 你会吗!???
查看>>
C#的异常处理机制
查看>>
vsftp:500 OOPS: could not bind listening IPv4 sock
查看>>
Linux安装BTCPayServer并设置比特币BTC和Lightning支付网关
查看>>
mysql安装,远程连接,以及修改密码
查看>>