HTA编辑HOST文件的脚本
2014-08-12来源:易贤网

<HTML>

<HEAD>

<TITLE>HOSTS 文件编辑器</TITLE>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta http-equiv="Content-Language" content="zh-CN">

<HTA:APPLICATION ID="hostedit"

APPLICATIONNAME="hostedit"

BORDER="thick"

BORDERSTYLE="normal"

CAPTION="yes"

ICON="C:\WINDOWS\system32\rasphone.exe" 

MAXIMIZEBUTTON="yes"

MINIMIZEBUTTON="yes"

SHOWINTASKBAR="yes"

SINGLEINSTANCE="yes"

SYSMENU="yes"

VERSION="1.0"

WINDOWSTATE="normal" />

<script language="JScript">

window.onerror = function ()

{

    window.alert("程序发生了未知错误,当前窗口将被关闭!");

    window.close();

    return true;

}

var windowW=450;    //窗体宽

var windowH=200;    //窗体高

var canresize=false;//是否可以改变大小

var windowW2=windowW;//编辑时窗体宽

var windowH2=200;//编辑时窗体高

window.resizeTo(windowW,windowH);

//window.moveTo((screen.width-windowW)/2,(screen.height-windowH)/2);

window.onresize=function(){if(!canresize)window.resizeTo(windowW,windowH);}

function init()

{

    var ui_table = document.getElementById('UI_TABLE');

    var bestHeight = 70+ui_table.scrollHeight;

    if(bestHeight > screen.height) bestHeight = screen.height;

    window.resizeTo(windowW, bestHeight);

    //window.moveTo((screen.width-windowW)/2,(screen.height-bestHeight)/2);

}

var hostfile = '\\drivers\\etc\\hosts';

function getlist(){

    var html='';

    var ids='';

    var i=1;

    FSO = new ActiveXObject("Scripting.FileSystemObject");

    var spath = FSO.GetSpecialFolder(1)+hostfile;

    host = FSO.OpenTextFile(spath, 1, false);

    while(!host.AtEndOfStream){

         tmp = host.ReadLine();

         if(/^#?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s+([a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+(\.(com|net|org|edu|info|biz|cc|tv|gov|mobi|name|cn|en|us|hk|tw))+)$/.test(tmp))

         {

        as=tmp.replace(/\s+/,'|:|').split('|:|');

        ids+='['+i+'],';

        if(/^\#/.test(as[0])){

            zt = '外网';

            ip = as[0].replace(/^\#/,'');

            co = '#eee!important';

            cz = '<a href="#" style="color:red;" onclick="zh('+i+',0);">切本地</a> | <a href="#" style="color:red;" onclick="ed(this,'+i+');">编辑</a> | <a href="#" style="color:red;" onclick="zh('+i+',2);">删除</a>';

        }else{

            zt = '本地';

            ip = as[0];

            co = '#fff!important';

            cz = '<a href="#" onclick="zh('+i+',1);">切外网</a> | <a href="#" style="color:red;" onclick="ed(this, '+i+');">编辑</a> | <a href="#" style="color:red;" onclick="zh('+i+',2);">删除</a>';    

        }

            html += '<tr><td style="background:'+co+';">'+zt+'</td><td style="background:'+co+';text-align:left;text-indent:6px;">'+as[1]+'</td><td style="text-align:left;text-indent:6px;background:'+co+';">'+ip+'</td><td style="background:'+co+';">'+cz+'</td></tr>';

        }

        i++;

    }

    var o=document.getElementById('ids');

    o.value=ids;

    host.Close();

    return html;

}

function ed(eo, iId){    

    document.getElementById('editId').value=iId;

    document.getElementById('pIP').value=eo.parentElement.parentElement.children[2].innerText;

    document.getElementById('pURL').value=eo.parentElement.parentElement.children[1].innerText;

    document.getElementById('addButt').style.display='none';

    document.getElementById('editButt').style.display='inline';

    document.getElementById('HostList').style.display='none';

    document.getElementById('addHost').style.display='block';

    window.resizeTo(windowW2,windowH2);

}

function edits(sIp, sUrl){

    var oi=document.getElementById(sIp);

    var ou=document.getElementById(sUrl);

    if(oi.value=='' || /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(oi.value)==false) {

        alert('IP地址不能为空或你输入的IP格式错误.');

        oi.focus();

        return;

    }

    if(ou.value=='' || /^[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+(\.(com|net|org|edu|info|biz|cc|tv|gov|mobi|name|cn|en|us|hk|tw))+$/.test(ou.value)==false) {

        alert('域名不能为空或你输入的域名格式错误.');

        ou.focus();

        return;

    }

    var iId = document.getElementById('editId').value;

    var body='';

    var i=1;

    FSO = new ActiveXObject("Scripting.FileSystemObject");

    var spath = FSO.GetSpecialFolder(1)+hostfile;    

    host = FSO.OpenTextFile(spath, 1, false);

    while(!host.AtEndOfStream){

        tmp = host.ReadLine();

        if(i==iId)

        {

            body+=oi.value+"\t"+ou.value+"\n";

        }

        else{

            body+=tmp+"\n";

        }

        i++;

    }

    host.close();

    svf = FSO.OpenTextFile(spath, 2, false);

    svf.Write(body);

    svf.close();

    window.location.reload();

}

function zh(irs,stype)

{

    var body='';

    var i=1;

    FSO = new ActiveXObject("Scripting.FileSystemObject");

    var spath = FSO.GetSpecialFolder(1)+hostfile;    

    host = FSO.OpenTextFile(spath, 1, false);

    while(!host.AtEndOfStream){

        tmp = host.ReadLine();

        if(i==irs)

        {

            if(stype==0){

                body+=tmp.replace(/^\#/,'');

                body+="\n";

            }else if(stype==1){

                if(/^\#/.test(tmp)){

                    body+=tmp+"\n";

                }else{

                    body+='#'+tmp +"\n";

                }

            }else{

            }

        }

        else{

            body+=tmp+"\n";

        }

        i++;

    }

    host.close();

    svf = FSO.OpenTextFile(spath, 2, false);

    svf.Write(body);

    svf.close();

    window.location.reload();

}

function zhall(stype)

{

    var body='';

    var i=1;

    var ids1=document.getElementById("ids").value;

    if(ids1=='') return;

    FSO = new ActiveXObject("Scripting.FileSystemObject");

    var spath = FSO.GetSpecialFolder(1)+hostfile;    

    host = FSO.OpenTextFile(spath, 1, false);

    while(!host.AtEndOfStream){

        tmp = host.ReadLine();

        if(stype==0 && ids1.indexOf('['+i+'],')!== -1){

            body+=tmp.replace(/^\#/,'');

            body+="\n";

        }else if(stype==1 && ids1.indexOf('['+i+'],')!== -1){

            if(/^\#/.test(tmp)){

                body+=tmp+"\n";

            }else{

                body+='#'+tmp +"\n";

            }

        }else{

            body+=tmp+"\n";

        }

        i++;

    }

    host.close();

    svf = FSO.OpenTextFile(spath, 2, false);

    svf.Write(body);

    svf.close();

    window.location.reload();

}

function AddHosts(sIp, sUrl){

    var oi=document.getElementById(sIp);

    var ou=document.getElementById(sUrl);

    if(oi.value=='' || /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(oi.value)==false) {

        alert('IP地址不能为空或你输入的IP格式错误.');

        oi.focus();

        return;

    }

    if(ou.value=='' || /^[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+\.((net)|(com)|(cn)|(org)|(cc)|(tv))$/.test(ou.value)==false) {

        alert('域名不能为空或你输入的域名格式错误.');

        ou.focus();

        return;

    }

    FSO = new ActiveXObject("Scripting.FileSystemObject");

    var spath = FSO.GetSpecialFolder(1)+hostfile;    

    host = FSO.OpenTextFile(spath, 8, false);

    host.Write("\n"+oi.value+"\t"+ou.value+"\n");

    host.close();

    alert('增加域名成功!');

    window.location.reload();

}

</script>

<style>

body{

 background-color:#99CCFF;

}

body *{

    font-size:12px;

    margin:0px;

    padding:0px;

}

.BUTT{

    BORDER: #2C59AA 1px solid;

    FONT-SIZE: 12px;

    COLOR: black;

    FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5);

    height:22px;

    padding: 3px 5px 0px;

    text-decoration: none;

}

.edit{

   BORDER: #2C59AA 1px solid;

   padding:1px;

}

#UI_TABLE{

    width:99%;cell-spacing:0px; margin:1px; border-collapse:collapse; border:1px solid #7d7d7d;

}

#UI_TABLE tr.TopTitle{

    text-align:center;

}

#UI_TABLE tr.TopTitle td {

    background-color:#C8E2F7;

}

#UI_TABLE tr td{

    border:1px solid #7d7d7d;text-align:center;padding:1px;

}

</style>

</HEAD>

<BODY  onLoad="init()" oncontextmenu="return false;" style="text-align:center; margin:0px;overflow-y:auto;overflow-x:hidden;border:none;background:menu;">

<div id="HostList">

    <input type="hidden" name="ids"/>

    <table id="UI_TABLE" >

        <tr class="TopTitle">

            <td>状态</td>

            <td style="width:140px;">域名</td>

            <td>IP地址</td>

            <td style="width:140px;">操作</td>    

        </tr>

        <script language="javascript" type="text/JavaScript">

               document.writeln(getlist());

        </script>

    </table>

    <div style="margin:6px;text-align:center;">

        <input type="button" value="全部切本地" name="b4" onclick="zhall(0);" class="BUTT" />    

        <input type="button" value="全部切外网" name="b5" onclick="zhall(1);" class="BUTT" />    

        <input type="button" value="增加域名" name="b6" onclick="document.getElementById('HostList').style.display='none';document.getElementById('addHost').style.display='block'; window.resizeTo(windowW2,windowH2);" class="BUTT" />

    </div>

</div>

<div id="addHost" style="display:none;">

    <input type="hidden" name="editId" name="editId" />

    <div style="text-align:left;margin:30px auto 0px; width:300px;">IP地址:<input type="text" name="pIP" id="pIP" class="edit" />  <input type="button" value="127.0.0.1" name="b2" onclick="document.getElementById('pIP').value='127.0.0.1';" class="BUTT" /></div>

    <div style="text-align:left;margin:20px auto; width:300px;">域  名:<input type="text" name="pURL" id="pURL" class="edit" /></div>

    <div style="margin:10px;text-align:center;">

        <input type="button" value="提  交" name="b1" id="addButt" onclick="AddHosts('pIp','pURL');" class="BUTT" />    

        <input type="button" value="编  辑" name="b2" id="editButt" style="display:none;" onclick="edits('pIp','pURL');" class="BUTT" />    

        <input type="button" value="返  回" name="b3" onclick="window.location.reload();" class="BUTT" />

    </div>

</div>

<script>

//屏蔽部分键盘操作,比如 F5

function document.onkeydown()

{wek=window.event.keyCode;

if((window.event.altKey)&&((wek==37)||(wek==39)))

{window.alert("Error:Invalid operation!");event.returnValue=false;}

if((wek==116)||(event.ctrlKey&&wek==82))

{window.event.keyCode=0;event.returnValue=false;}

if((event.ctrlKey)&&(wek==78))

event.returnValue=false;

if((event.shiftKey)&&(wek==121))

event.returnValue=false;

if(window.event.srcElement.tagName=="A"&&window.event.shiftKey)

window.event.returnValue=false;

if((window.event.altKey)&&(wek==115))

{window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");return false;}

if(wek==122){window.event.keyCode=0;window.alert("Error:Invalid operation!");return false;}

}

</script>

</BODY>

</HTML>

更多信息请查看IT技术专栏

2025公考·省考培训课程试听预约报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
推荐信息