'前几天又看了《Windows Scripting Secrets》的Chapter 3:Kidnapping Objects.
'知道注册表里的HKEY_CLASSES_ROOT内容存储一些关于对象的信息。
'HKEY_CLASSES_ROOT\CLSID 已经安装对象的信息。
'HKEY_CLASSES_ROOT\CLSID\{clsid}\InProcServer32下有一个位置存放有文件的位置。
'HKEY_CLASSES_ROOT\Component Categories\是关于属性的
'还有 HKEY_CLASSES_ROOT\TypeLib\,等等。你自己猜她的意义吧!
'知道注册表里的HKEY_CLASSES_ROOT内容存储一些关于对象的信息。
'HKEY_CLASSES_ROOT\CLSID 已经安装对象的信息。
'HKEY_CLASSES_ROOT\CLSID\{clsid}\InProcServer32下有一个位置存放有文件的位置。
'HKEY_CLASSES_ROOT\Component Categories\是关于属性的
'还有 HKEY_CLASSES_ROOT\TypeLib\,等等。你自己猜她的意义吧!
'它的3-3例子是列对象属性的。3-4是列对象的。
'这两个例子都要对象regtool.tob,我电脑上没有。
'下面是我自己编程实现3-4例子的功能的代码,有不好的地方,敬请指导。
'made by correy
'QQ:112426112
'Email:leguanyuan@126.com
'Homepage:http://correy.webs.com
'我相信大家还有更多更好的实现方法。
'这两个例子都要对象regtool.tob,我电脑上没有。
'下面是我自己编程实现3-4例子的功能的代码,有不好的地方,敬请指导。
'made by correy
'QQ:112426112
'Email:leguanyuan@126.com
'Homepage:http://correy.webs.com
'我相信大家还有更多更好的实现方法。
'列出你电脑上所有可以用vbs的createobject函数建立的对象。
'好像hkcr\对象\下没有clsid的而有curver的对象也可以使用。
'on error resume next
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
wshshell.run ("cmd /k reg query hkcr >%temp%\reg-query.txt"& "&exit"),0,1
Set f = fso.OpenTextFile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\reg-query.txt" )
'跳过前六行。
l = f.skipline
l = f.readline
l = f.skipline
l = f.readline
l = f.skipline
l = f.readline
do while f.atendofline <> 1'用此方法,可导致最后一个对象会重复显示。
l = f.skipline
l = f.readline
'第19个是.的不是对象。
if instr (1,l,".",1)=19 then
else
'下面的代码也可以用wshshell.regread方法实现。
wshshell.run ("cmd /k reg query HKCR\" & mid(l,19,len(l)-16) &"\CLSID" & "> "& WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt" & "&exit"),0,1
set f2=fso.getfile(WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt")
if f2.size = 0 then
else
wscript.echo mid(l,19,len(l)-16)
end if
end if
loop
fso.deletefile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\reg-query.txt")
fso.deletefile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt")
'made at 2010.06.24
'好像hkcr\对象\下没有clsid的而有curver的对象也可以使用。
'on error resume next
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
wshshell.run ("cmd /k reg query hkcr >%temp%\reg-query.txt"& "&exit"),0,1
Set f = fso.OpenTextFile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\reg-query.txt" )
'跳过前六行。
l = f.skipline
l = f.readline
l = f.skipline
l = f.readline
l = f.skipline
l = f.readline
do while f.atendofline <> 1'用此方法,可导致最后一个对象会重复显示。
l = f.skipline
l = f.readline
'第19个是.的不是对象。
if instr (1,l,".",1)=19 then
else
'下面的代码也可以用wshshell.regread方法实现。
wshshell.run ("cmd /k reg query HKCR\" & mid(l,19,len(l)-16) &"\CLSID" & "> "& WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt" & "&exit"),0,1
set f2=fso.getfile(WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt")
if f2.size = 0 then
else
wscript.echo mid(l,19,len(l)-16)
end if
end if
loop
fso.deletefile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\reg-query.txt")
fso.deletefile ( WshShell.ExpandEnvironmentStrings("%temp%") & "\temp.txt")
'made at 2010.06.24
没有评论:
发表评论