首页 / 编程脚本 / 用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
"there"s 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