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 判断字符串是否为数字的简单方法
Jul 25 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
Jan 11 Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
JS中的form.submit()不能提交表单的错误原因
Oct 08 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 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 adodb连接不同数据库
2009/03/19 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python调用自定义函数的实例操作
2019/06/26 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
python super函数使用方法详解
2020/02/14 Python
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
小组名称和口号
2014/06/09 职场文书
银行求职自荐信
2014/06/30 职场文书
财务稽核岗位职责
2015/04/13 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
儿子满月酒致辞
2015/07/29 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
Python matplotlib绘制雷达图
2022/04/13 Python