javascript判断并获取注册表中可信任站点的方法


Posted in Javascript onJune 01, 2015

本文实例讲述了javascript判断并获取注册表中可信任站点的方法。分享给大家供大家参考。具体分析如下:

判断可信任站点,首先要在注册表中找到可信任站点在注册表中的位置,如下:

(1)域名作为可信任站点在注册表中的位置:

 HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\InternetSettings\\ZoneMap\\Domains\\

(2)IP作为可信任站点在注册表中的位置:

 HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\InternetSettings\\ZoneMap\\Ranges

javascript判断并获取注册表中可信任站点的方法

具体测试代码如下:

index.jsp:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取并判断可信任站点(域名和IP)</title>
<style type="text/css">
.mainContent{ 
 margin: 0 auto; 
 margin-top: 100px; 
 margin-left: 100px; 
} 
</style>
<script type="text/javascript" src="js/testRegister.js"></script>
</head>
<body>
<div class="mainContent">
  <input type="button" value="是否是可信站点" id="testRegister" />
</div>
</body>
</html>

js代码:

/* 
 * 判断可信任站点(可信任站点可以为IP地址也可以为域名) 
 */ 
window.onload = function(){ 
  var btnObj = document.getElementById("testRegister"); 
  btnObj.onclick = function(){ 
    if(navigator.userAgent.indexOf("MSIE") == -1){  
      alert("只支持IE浏览器!"); 
      return; 
    } 
    var hostname = window.location.hostname; 
    var WshShell = new ActiveXObject("WScript.Shell"); 
    //IP的正则表达式 
    var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/; 
    //根据域名判断是否存在可信站点 
    if(hostname != "localhost" && !reg.test(hostname)){ 
      var domainSFlag = false,domainEFlag = false,domainSEFlag = false,domainSSEFlag = true; 
      var hostnamePrefix = "",hostnameSuffix = ""; 
      var indexOf = hostname.indexOf("."); 
      if(indexOf != -1){ 
        hostnamePrefix = hostname.substring(0, indexOf); 
        hostnameSuffix = hostname.substring(indexOf+1, hostname.length); 
        try{ 
          WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + hostname + "\\http");   
        }catch(e){ 
          domainEFlag = true; 
        } 
        if(domainEFlag){ 
          try{ 
            WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + hostnameSuffix + "\\" + hostnamePrefix + "\\http");   
          }catch(e){ 
            domainSFlag = true; 
          } 
        } 
        //判断其合法性 
        if(domainEFlag && domainSFlag){ 
          try{ 
            WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + hostnameSuffix + "\\" + hostnamePrefix + "\\*");   
            var tipInfo = "<div>您加入的可信站点不是合法的可信站点,请以<span style='color:red;'>http://</span>开头!</div>"; 
            alert(tipInfo); 
            return; 
          }catch(e){} 
        } 
      }else{ 
        try{ 
          WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + hostname + "\\http");   
        }catch(e){ 
          domainSEFlag = true; 
        } 
        //判断其合法性 
        if(domainSEFlag){ 
          try{ 
            WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + hostname + "\\*");   
            var tipInfo = "<div>您加入的可信站点不是合法的可信站点,请以<span style='color:red;'>http://</span>开头!</div>"; 
            alert(tipInfo); 
            return; 
          }catch(e){} 
        } 
      } 
      if((domainSFlag && domainEFlag) || domainSEFlag){ 
        var tipInfo = "域名为" + hostname + "的可信任站点不存在!"; 
        alert(tipInfo); 
        alert(tipInfo); 
        return; 
      } 
    }else{ 
      //获取可信任站点IP,数字2000没法解释,主要涉及到注册表的问题 
      var str = [];  
      for(var i = 1;i < 2000;i++){  
        try{ 
          str[i] = WshShell.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges\\Range" + i + "\\:Range"); 
        }catch(e){ 
        } 
      } 
      var count = true; 
      for(var i = 1;i < str.length;i++){  
        if(str[i] == undefined){ 
          continue; 
        }else{ 
          if(str[i] == hostname){ 
            count = false; 
            break; 
          } 
        } 
      } 
      if(count){ 
        var tipInfo = "IP为" + hostname+"可信任站点不存在!"; 
        alert(tipInfo);   
        return 
      } 
    } 
    alert("存在可信任站点!"); 
  } 
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
javascript下function声明一些小结
Dec 28 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
js用Date对象的setDate()函数对日期进行加减操作
Sep 18 Javascript
使用jquery提交form表单并自定义action的实现代码
May 25 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
Bootstrap Table从零开始
Jun 30 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
JavaScript一元正号运算符示例代码
Jun 30 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
js事件监听器用法实例详解
Jun 01 #Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 #Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 #Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 #Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 #Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 #Javascript
JavaScript实现的简单拖拽效果
Jun 01 #Javascript
You might like
php 显示指定路径下的图片
2009/10/29 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
javascript变量提升和闭包理解
2018/03/12 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
virtualenv实现多个版本Python共存
2017/08/21 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
酒店总经理欢迎词
2014/01/15 职场文书
三爱活动实施方案
2014/03/19 职场文书
优秀应届生求职信
2014/06/16 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
CAD实训总结范文
2015/08/03 职场文书