以前写过这个东西:http://bbs.bathome.net/thread-30886-1-1.html,把关键部分提取出来,存为 listcom.js,运行即可得到本机可用的com组件.txt | var fso = new ActiveXObject('Scripting.FileSystemObject') | | var ts = fso.CreateTextFile('本机可用的com组件.txt',true) | | ts.Write(listcom().join('\r\n')) | | | | | | function listcom(){ | | | | | | var retArr=[] | | var ws = new ActiveXObject('WScript.Shell') | | var dict = new ActiveXObject('Scripting.Dictionary') | | var oLoc=new ActiveXObject("WbemScripting.SWbemLocator") | | | | var HKCR=0x80000000 | | | | var oReg=oLoc.ConnectServer(null,"root\\default").Get("StdRegProv") | | var oMethod=oReg.Methods_("EnumKey") | | var oInParam=oMethod.InParameters.SpawnInstance_() | | oInParam.hDefKey=HKCR | | oInParam.sSubKeyName='' | | var NameAndType=oReg.ExecMethod_(oMethod.Name,oInParam) | | var arrSubKeys=NameAndType.sNames.toArray() | | | | | | for(var i=0;i<arrSubKeys.length;i++){ | | var key=arrSubKeys[i] | | if(key.search(/..\./)<0)continue | | if(key.search(/..\..*\./)>0){ | | | | | | | | | | independent = key.replace(/.+?$/,'') | | if (!dict.Exists(independent)){ | | | | dict.Add(key, 0) | | } | | }else{ | | | | | | | | var vdpid = "" | | | | for(var element in dict){ | | if (element.length>key.length){ | | if (element.substring(key.length)==key + "."){ | | | | vdpid = element | | break | | } | | } | | } | | | | | | if (vdpid.length) { | | | | dict.Remove(vdpid) | | dict.Add(key, '') | | }else{ | | | | dict.Add(key, '') | | } | | } | | } | | var arr = new VBArray(dict.Keys()).toArray(); | | for (var i=0;i<arr.length;i++){ | | retArr.push(arr[i]) | | } | | return retArr | | }COPY |
|