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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
Underscore.js 的模板功能介绍与应用
Dec 24 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
解决JS请求服务器gbk文件乱码的问题
Oct 16 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 Javascript
Asp.Net之JS生成分页条的方法
Nov 23 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
Vue.js组件通信之自定义事件详解
Oct 19 Javascript
js表达式与运算符简单操作示例
Feb 15 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
Bootstrap面板使用方法
2017/01/16 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
python实现局域网内实时通信代码
2019/12/22 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
公司活动策划方案
2014/01/13 职场文书
趣味体育活动方案
2014/02/08 职场文书
介绍信范文大全
2015/05/07 职场文书
小学远程教育工作总结
2015/08/13 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
golang定时器
2022/04/14 Golang