2012年7月5日星期四

object.vbs


'前几天又看了《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\,等等。你自己猜她的意义吧!
'它的3-3例子是列对象属性的。3-4是列对象的。
'这两个例子都要对象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

没有评论:

发表评论