我们知道IE中的Iternet选项,中程序标签下有一个管理加载器 。里面会列举IE中的各个加载项目
包括ActiveX 控件、浏览器扩展(Explorerbar)、浏览器帮助程序对象(BrowserHelper Object) 或工具栏(Toolbar) 这四项目,请问这个是怎么列举出来的呢?
我有一个思路是根据注册表来列举、比如
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions 
这个下面是对对应的浏览器扩展,对于浏览器帮助对象所在的注册表位置,我也知道,
现在就是不知道ActiveX 控件在注册表中的位置,高人请指点。
我的最终目的是实现列举IE 中的各个加载项
谢谢!

解决方案 »

  1.   

    有些可能是目录,如“ActiveX 控件”,在C:\WINDOWS\Downloaded Program Files下。
    我用的是IE7
      

  2.   

    先谢谢上面的两位大哥的解答:
    首先;我在加载管理器中看到了Shell Name Space , ShockWave Flash Object , SearchAssistantOc 这三个AcitiveX 控件,而我到C:\WINDOWS\Downloaded Program Files 确没有看到任何文件(显示隐藏文件打开了)说明这个有问题。
    在clsid下的确有我要的控件,但是其子键太多了,不知道怎么分辨那些属于ActiveX 控件, 谢谢指点!
      

  3.   

    譬如说ShockWave Flash Object,它和C:\Windows\DownLoaded Program Files没有什么关系吧,ShockWave Flash Object在注册表中的位置是HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000},能过这个可以查到它的磁盘上的位置。
      

  4.   

    谢谢sjdev
    恩,我知道ShockWave Flash Object在你说的位置是正确的,也可以看到看到其对应的文件位置,
    但是问题是HKEY_CLASSES_ROOT\CLSID 目录下有很多子目录,并不是所有目录都对应着一个IE的ActiveX控件,
    我并不知道哪些目录对应真正的ActiveX 控件,是不是子目录满足一定的特征呢?或是可以通过什么方法确定呢?再次感谢
      

  5.   

    是的,HCR\CLSID目录下的虽然都是com对象,但并不都是ActiveX控件。所有的ActiveX控件在注册表中还有一个共同点,就是包含一control子键。
      

  6.   

    大哥,我只想查看IE里面使用到的插件,
    IE 中的--》internet选项 --》程序---》 加载管理项-->Internet Explorer 中已经 使用的加载项 
    之后就会显示已经加载的选项了,这是通过真怎样的机制罗列出来的呢?我就想实现这个功能!
    大虾指点一二,感激不尽!
      

  7.   

    这个有好几种呢,有浏览器扩展,有BHO,还有IE工具栏等,你得挨个枚举了。
    浏览器扩展的注册表位置是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions
    BHO的位置是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
    其它的差不多了。你通过枚举注册表子项,就可以全部枚举了。
      

  8.   

    ActiveX控件也是COM组件,没有特定的类别,所以在注册表中基本不能判断是普通的COM还是ActiveX。
    ActiveX是由网页或者其它容器窗口加载的,网页或窗口设计者往往知道控件的GUID或者PROGID,所以直接按照这个ID来定位,IE浏览器是不会主动加载的,也不会去枚举到底有哪些控件。当网页通过object标签或者脚本加载控件后,IE可以自行记录下来整个列表,这个列表就反映在加载项管理器中的ActiveX版块中。至于判断一个已加载的COM组件是不是ActiveX倒是很容易,只需查询它是否实现了IOleControl接口即可。
      

  9.   

    那些ActiveX应该是从HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components下加载的吧。