为了使程序正常运行,需要在客户端安装一个插件,那么在每次打开时都需要检测一遍 ,如果插件已经安装,则不提示安装,否则提示安装:插件安装后会在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]写入注册信息;开始时,我通过JS提取“navigator.userAgent”中的信息,可以提取到我写入注册表的信息,但在有的客户端却无法提取到,错误原因可能是安装多个浏览器所致;后来,我想着通过直接检测注册表的信息检测,但需要创建新的ActiveXObject对象,如下
var myreadreg=new ActiveXObject("WScript.shell");
但通过这种方法需要用户手动修改"本地Intranet"内“对没有标记为安全的ActiveX控件进行初始化和脚本运行”这一项设置为“启用”,又不太现实实在想不出其它的方法,所以想到了发帖求助,希望论坛的高手能够给予帮助。

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /> 
    <html xmlns="http://www.w3.org/1999/xhtml"><br /> 
    <head><br /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
    <body><br /> 
    <script type="text/javascript"> 
     
    //<![data[ 
    checkInstalled = function(m) { 
    switch(m){ 
    case 'msn': 
    try { 
    new ActiveXObject("MSNMessenger.P4QuickLaunch"); 
    return true; 

    catch (e) { 
    return false; 

    case 'skype': 
    try{ 
    new ActiveXObject("Skype.Detection"); 
    return true; 
    }catch(e){ 
    return false; 

    case 'qq': 
    try { 
    new ActiveXObject("TimwpDll.TimwpCheck"); 
    return true; 

    catch (e) { 
    return false; 



    //]]--> 
    </script> <input type="button" value="检测有没有安装MSN" onclick="alert(checkInstalled('msn'))" /> 
    <input type="button" value="检测有没有安装QQ" onclick="alert(checkInstalled('qq'))" /> 
    <input type="button" value="检测有没有安装SKYPE" onclick="alert(checkInstalled('skype'))" /> 
    </body><br /> 
    </html><br /> 就这2种,你都知道。是有安全问题,很多地方也都用的。用户可以自己选择要不要启用控件。
      

  2.   

    谢谢楼上的回复!我根据你给我的代码测试了一下,测试安装msn、qq及skype是不会出现安全提示栏的,我发现 new ActiveXObject("TimwpDll.TimwpCheck")中的TimwpDll.TimwpCheck是存放在注册表中HKEY_CLASSES_ROOT下的,我自己在其目录下新建了个项,但是对新建的项进行检测却是会出现安全提示栏,不知区别在哪里?