• 网络正常只有自己访问网站异常一度让你怀疑,是不是被黑了!域名解析异常是如何发生的,如何解决处理及C#编程实现一键修改Hosts文件


    首先大家要知道在浏览器上浏览虚拟主机,必须使用Hosts文件或域名系统(DNS)实现主机名到IP地址的解析。在局域网中用Hosts文件或DNS都可以,在Internet上只能用DNS了。 

    1.当用户输入一个域名以百度为例(www.baidu.com)。

    2.首先会到C:WindowsSystem32driversetc目录中用Hosts文件去查询相关的IP是否存在,如果存在就会访问该IP地址。

    3.不存在该域名解析,那么就会到公网DNS查找。

    当你访问域名出现异常,可能Hosts文件被修改了或者DNS被挟持了。

    解决方案:

    1.首先检查你的C:WindowsSystem32driversetc目录下的Hosts文件查看是否存在域名强制转向IP的情况,有的话把这个选项去掉。找不到文件设置隐藏文件可见。

    2.DNS被劫持或篡改了。你可以手动修改本地电脑的DNS,默认为空如下图,你可以在首选设置为:114.114.114.114,备用设置为:114.114.115.115;并查杀一下病毒。或者你的路由器被篡改了(设置的密码太弱),建议用修复工具修改。

    上面介绍了网络正常域名访问出问题的原因,那么下面就带大家使用C#搞一个Hosts修改工具(大家可以来研究,了解技术,但是不要用来恶搞他人):

    private static void updateHosts(string ip,string domain)
            {
                string path = @"C:WINDOWSsystem32driversetchosts";
                //通常情况下这个文件是只读的,所以写入之前要取消只读
                File.SetAttributes(path, File.GetAttributes(path) & (~FileAttributes.ReadOnly));//取消只读
                //1.创建文件流
                FileStream fs =ip==""? new FileStream(path, FileMode.Create): new FileStream(path, FileMode.Append);
                //2.创建写入器
                StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
                //3.开始写入
                bool result = false;//标识是否写入成功
                try
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append(ip);//IP地址
                    sb.Append("   ");
                    sb.Append(domain);//网址
                    sw.WriteLine(sb.ToString());
                    result = true;
                }
                catch (Exception ex)
                {
                    result = false;
                }
                finally
                {
                    //4.关闭写入器
                    if (sw != null)
                    {
                        sw.Close();
                    }
                    //5.关闭文件流
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
                if (result == true)
                {
                    MessageBox.Show("成功!");
                    File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);//设置只读
                }
                else
                {
                    MessageBox.Show("失败!");
                    return;
                }
            }

    在网址部分输入www.baidu.com,之后添加试试看,你还能访问百度吗?

    没关系,之后你点清除,你又可以访问了!

    源码地址:https://files.cnblogs.com/files/jiyuwu/HostsEdit.zip

  • 相关阅读:
    iview的modal点击确定消失(自动关闭)问题,自定义modal页脚
    vue实现组件数据双向绑定
    vue中封装svg-icon组件并使用
    闭包的概念
    vue基本集
    websocket
    99multiplication table
    h5c3增加了哪些新特性
    防抖与节流函数
    网页性能优化小技巧
  • 原文地址:https://www.cnblogs.com/jiyuwu/p/9434140.html
Copyright © 2020-2023  润新知