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 相关文章推荐
默认让页面的第一个控件选中的javascript代码
Dec 26 Javascript
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
js对象数组按属性快速排序
Jan 31 Javascript
jquery 选取方法都有哪些
May 18 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
Aug 24 Javascript
JS 数组随机洗牌的实例代码
Sep 12 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
Jun 19 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 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/12/28 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
python删除字符串中指定字符的方法
2018/08/13 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
kafka-python批量发送数据的实例
2018/12/27 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
物业招聘计划书
2014/01/10 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
初中家长寄语
2014/04/02 职场文书
青年标兵事迹材料
2014/08/16 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年班干部工作总结
2014/11/25 职场文书
党员示范岗材料
2014/12/19 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
Python 发送SMTP邮件的简单教程
2021/06/24 Python