10.Vbs脚本编程简明教程之十 —— Vbs脚本编程常用的编辑器
Vbs脚本常用的编辑器当然是notapad,不过这个编辑器的功能当然实在是太弱了一点,其实有很多的专用的脚本编辑器可以大大方便vbs脚本的编写。我常用的有两种:
1、VBSEDit汉化版
2、primalscript汉化版,可以对30多种脚本进行编辑
11.Vbs脚本编程简明教程之十一 ——FSO中文件的基本操作
一、文件属性:
在windows中,文件的属性一般用数字来表示:
0代表normal,即普通文件未设置任何属性。 1代表只读文件。
2代表隐藏文件。 4代表系统文件。 16代表文件夹或目录。
32代表存档文件。 1024代表链接或快捷方式。例如:
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfile(“d:\index.txt”)
msgbox f.Attributes ‘attributes函数的作用是显示文件属性
需要说明的是:msgbox显示的结果往往不是上面说明的数字,而是有关属性代表数字的和。
二、创建文件:object.createtextfile方法,注意创建前一般需要检查文件是否存在。
例如:set fso=wscript.createobject(“scripting.filesystemobject”)
if fso.fileexists(“c:\kk.txt”) then
msgbox “文件已存在”
else
set f=fso.createtextfile(“c:\kk.txt”)
end if
如需要强制覆盖已存在的文件,则在文件名后加true参数。
三、复制、移动、删除文件:使用copyfile方法、movefile方法、deletefile方法。例如:
set fso=wscript.createobject(“scripting.filesystemobject”)
fso.copyfile “c:\kk.txt”,”d:\1\kk.txt”,true //如上文说述,true代表强制覆盖
fso.movefile “c:\kk.txt”, “d:\” //移动文件
fso.deletefile “c:\kk.txt” //删除文件
四、文件的读写:
1、打开文件:使用opentextfile方法
如:set ts=fso.opentextfile(“c:\kk.txt”,1,true)
说明:第二个参数为访问模式1为只读、2写入、8为追加
第三个参数指定如文件不存在则创建。
2、读取文件:read(x)读x个字符;readline读一行;readall全部读取
如:set ffile=fso.opentextfile(“c:\kk.txt”,1,true)
value=ffile.read(20)
line=ffile.readline
contents=ffile.readall
3、常见的指针变量:
atendofstream属性:当处于文件结尾的时候这个属性返回true。一般用循环检测是否到达文件末尾。例如:
do while ffile.atendofstream<>true
ffile.read(10)
loop
atendofline属性:如果已经到了行末尾,这个属性返回true。
Column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1。
4、在文件中跳行:skip(x) 跳过x个字符;skipline 跳过一行
5、在文件中写入字符:可以用2-写入和8-追加的方式来写入
其方法有:write(x)写入x字符串;writeline(x)写入x代表的一行
writeblanklines(n) 写入n个空行
注意:最后一定要使用close方法关闭文件。读文件后一定要关闭,才能以写的方式打开。
12.Vbs脚本编程简明教程之十二—使用系统对话框
在VBS脚本设计中,如果能使用windows提供的系统对话框,可以简化脚本的使用难度,使脚本人性化许多,很少有人使用,但VBS并非不能实现这样的功能,方法当然还是利用COM对象。
1、SAFRCFileDlg.FileSave对象:属性有:FileName — 指定默认文件名;FileType —
指定文件扩展名;OpenFileSaveDlg — 显示文件保存框体方法。
2、SAFRCFileDlg.FileOpen 对象:FileName — 默认文件名属性;OpenFileOpenDlg — 显示打开文件框体方法。
3、UserAccounts.CommonDialog对象:Filter — 扩展名属性("vbs File|*.vbs|All Files|*.*");
FilterIndex — 指定
InitialDir — 指定默认的文件夹
FileName — 指定的文件名
Flags — 对话框的类型
Showopen方法:
很简单,ok,让我们来举两个简单的例子:
例一:保存文件
Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objDialog.FileName = "test"
objDialog.FileType = ".txt"
intReturn = objDialog.OpenFileSaveDlg
If intReturn Then
objFSO.CreateTextFile(objDialog.FileName & objdialog.filetype)
Else
Wscript.Quit
End If
注意:1、SAFRCFileDlg.FileSave对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用FSO对象来完成。2、用FileType属性来指定默认的文件类型。3、在调用OpenFileSaveDlg方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。
例二:.打开文件
set objFile = CreateObject("SAFRCFileDlg.FileOpen")
intRet = objFile.OpenFileOpenDlg
if intret then
msgbox “文件打开成功!文件名为:” & objFile.filename
else
wscript.quit
end if
例三:比较复杂的打开文件对话框
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "vbs File|*.vbs"
objDialog.InitialDir = "c:\"
tfile=objDialog.ShowOpen
if tfile then
strLoadFile = objDialog.FileName
msgbox strLoadFile
else
wscript.quit
end if
说明:在脚本中加入 objDialog.Flags = &H020 看看会出现什么结果。
13.
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基础之二—阻止客人运行你不想运行的程序
很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,比如说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进程的运行就可以了。
Vbs脚本常用的编辑器当然是notapad,不过这个编辑器的功能当然实在是太弱了一点,其实有很多的专用的脚本编辑器可以大大方便vbs脚本的编写。我常用的有两种:
1、VBSEDit汉化版
2、primalscript汉化版,可以对30多种脚本进行编辑
11.Vbs脚本编程简明教程之十一 ——FSO中文件的基本操作
一、文件属性:
在windows中,文件的属性一般用数字来表示:
0代表normal,即普通文件未设置任何属性。 1代表只读文件。
2代表隐藏文件。 4代表系统文件。 16代表文件夹或目录。
32代表存档文件。 1024代表链接或快捷方式。例如:
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfile(“d:\index.txt”)
msgbox f.Attributes ‘attributes函数的作用是显示文件属性
需要说明的是:msgbox显示的结果往往不是上面说明的数字,而是有关属性代表数字的和。
二、创建文件:object.createtextfile方法,注意创建前一般需要检查文件是否存在。
例如:set fso=wscript.createobject(“scripting.filesystemobject”)
if fso.fileexists(“c:\kk.txt”) then
msgbox “文件已存在”
else
set f=fso.createtextfile(“c:\kk.txt”)
end if
如需要强制覆盖已存在的文件,则在文件名后加true参数。
三、复制、移动、删除文件:使用copyfile方法、movefile方法、deletefile方法。例如:
set fso=wscript.createobject(“scripting.filesystemobject”)
fso.copyfile “c:\kk.txt”,”d:\1\kk.txt”,true //如上文说述,true代表强制覆盖
fso.movefile “c:\kk.txt”, “d:\” //移动文件
fso.deletefile “c:\kk.txt” //删除文件
四、文件的读写:
1、打开文件:使用opentextfile方法
如:set ts=fso.opentextfile(“c:\kk.txt”,1,true)
说明:第二个参数为访问模式1为只读、2写入、8为追加
第三个参数指定如文件不存在则创建。
2、读取文件:read(x)读x个字符;readline读一行;readall全部读取
如:set ffile=fso.opentextfile(“c:\kk.txt”,1,true)
value=ffile.read(20)
line=ffile.readline
contents=ffile.readall
3、常见的指针变量:
atendofstream属性:当处于文件结尾的时候这个属性返回true。一般用循环检测是否到达文件末尾。例如:
do while ffile.atendofstream<>true
ffile.read(10)
loop
atendofline属性:如果已经到了行末尾,这个属性返回true。
Column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1。
4、在文件中跳行:skip(x) 跳过x个字符;skipline 跳过一行
5、在文件中写入字符:可以用2-写入和8-追加的方式来写入
其方法有:write(x)写入x字符串;writeline(x)写入x代表的一行
writeblanklines(n) 写入n个空行
注意:最后一定要使用close方法关闭文件。读文件后一定要关闭,才能以写的方式打开。
12.Vbs脚本编程简明教程之十二—使用系统对话框
在VBS脚本设计中,如果能使用windows提供的系统对话框,可以简化脚本的使用难度,使脚本人性化许多,很少有人使用,但VBS并非不能实现这样的功能,方法当然还是利用COM对象。
1、SAFRCFileDlg.FileSave对象:属性有:FileName — 指定默认文件名;FileType —
指定文件扩展名;OpenFileSaveDlg — 显示文件保存框体方法。
2、SAFRCFileDlg.FileOpen 对象:FileName — 默认文件名属性;OpenFileOpenDlg — 显示打开文件框体方法。
3、UserAccounts.CommonDialog对象:Filter — 扩展名属性("vbs File|*.vbs|All Files|*.*");
FilterIndex — 指定
InitialDir — 指定默认的文件夹
FileName — 指定的文件名
Flags — 对话框的类型
Showopen方法:
很简单,ok,让我们来举两个简单的例子:
例一:保存文件
Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objDialog.FileName = "test"
objDialog.FileType = ".txt"
intReturn = objDialog.OpenFileSaveDlg
If intReturn Then
objFSO.CreateTextFile(objDialog.FileName & objdialog.filetype)
Else
Wscript.Quit
End If
注意:1、SAFRCFileDlg.FileSave对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用FSO对象来完成。2、用FileType属性来指定默认的文件类型。3、在调用OpenFileSaveDlg方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。
例二:.打开文件
set objFile = CreateObject("SAFRCFileDlg.FileOpen")
intRet = objFile.OpenFileOpenDlg
if intret then
msgbox “文件打开成功!文件名为:” & objFile.filename
else
wscript.quit
end if
例三:比较复杂的打开文件对话框
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "vbs File|*.vbs"
objDialog.InitialDir = "c:\"
tfile=objDialog.ShowOpen
if tfile then
strLoadFile = objDialog.FileName
msgbox strLoadFile
else
wscript.quit
end if
说明:在脚本中加入 objDialog.Flags = &H020 看看会出现什么结果。
13.
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基础之二—阻止客人运行你不想运行的程序
很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,比如说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进程的运行就可以了。