用vbs列出机器上所有能调用的组件 |
本文标签:vbs,组件 要用到regtool.ocx,请下载http://www.jb51.net/jslib/regtool.ocx,用前请regsvr32 regtool.ocx set wshshell = CreateObject("WScript.Shell") set registry = CreateObject("regtool.tob") 获取一个dictionary对象存储键名 set dict = CreateObject("Scripting.Dictionary") 列举HKEY_CLASSES_ROOT中所有键 set allkeys = registry.RegEnum("HKCR\") 排除所有键中键名有点的 。 for each key in allkeys 第1个点在哪儿(跳过初始点)? pos = Instr(2, key, ".") if pos>0 then theres a dot. Is there another one? pos2 = Instr(pos+1, key, ".") if pos2>0 then yes, so this name is version specific check whether we already have a version-independent progid! independent = left(key, pos2-1) if not dict.Exists(independent) then no, store it dict.Add key, 0 end if else this one is version-independent. do we already have a version-dependent progID in store? vdpid = "" for each element in dict if len(element)>len(key) then if left(element, len(key)+1)=key & "." then yes, return name vdpid = element exit for end if end if next any version dependent progID found? if vdpid="" then no, add to store dict.add key, 0 else yes, replace dict.Remove vdpid dict.add key, 0 end if end if end if next MsgBox dict.Count & " Objects found!" for each key in dict list = list & key & vbCrlf next MsgBox list outputfile = "C:\OBJECT.TXT" set fs = CreateObject("Scripting.FileSystemObject") set output = fs.CreateTextFile(outputfile, true) print dict.Count & " Objects found!" Print list output.close wshshell.run outputfile sub Print(text) 写信息到记录文件 output.WriteLine text end sub |