網絡正常只有本身訪問網站異常一度讓你懷疑,是否是被黑了!域名解析異常是如何發生的,如何解決處理及C#編程實現一鍵修改Hosts文件

首先你們要知道在瀏覽器上瀏覽虛擬主機,必須使用Hosts文件或域名系統(DNS)實現主機名到IP地址的解析。在局域網中用Hosts文件或DNS均可以,在Internet上只能用DNS了。 
瀏覽器

1.當用戶輸入一個域名以百度爲例(www.baidu.com)。網絡

2.首先會到C:\Windows\System32\drivers\etc目錄中用Hosts文件去查詢相關的IP是否存在,若是存在就會訪問該IP地址。dom

3.不存在該域名解析,那麼就會到公網DNS查找。工具

當你訪問域名出現異常,可能Hosts文件被修改了或者DNS被挾持了。ui

解決方案:spa

1.首先檢查你的C:\Windows\System32\drivers\etc目錄下的Hosts文件查看是否存在域名強制轉向IP的狀況,有的話把這個選項去掉。找不到文件設置隱藏文件可見。code

2.DNS被劫持或篡改了。你能夠手動修改本地電腦的DNS,默認爲空以下圖,你能夠在首選設置爲:114.114.114.114,備用設置爲:114.114.115.115;並查殺一下病毒。或者你的路由器被篡改了(設置的密碼太弱),建議用修復工具修改。blog

上面介紹了網絡正常域名訪問出問題的緣由,那麼下面就帶你們使用C#搞一個Hosts修改工具(你們能夠來研究,瞭解技術,可是不要用來惡搞他人):ip

private static void updateHosts(string ip,string domain)
        {
            string path = @"C:\WINDOWS\system32\drivers\etc\hosts";
            //一般狀況下這個文件是隻讀的,因此寫入以前要取消只讀
            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

相關文章
相關標籤/搜索