C# 如何读写 hosts 文件

解决方案 »

  1.   


            /// <summary>
            /// 从文本文件替换包含特定字串所在行
            /// </summary>
            /// <param name="source">特定字串</param>
            /// <param name="target">目标字串</param>
            /// <returns>如果成功返回TRUE</returns>
            public bool ReplaceLine(string source, string target)
            {
                string findstr = "";
                try
                {
                    StringBuilder sb = new StringBuilder();                StreamReader str = new StreamReader("C:\\WINDOWS\\system32\\drivers\\etc\\hosts", System.Text.Encoding.Default);
                    while (str.Peek() >= 0)
                    {
                        findstr = str.ReadLine();
                        if (findstr.Contains(source)&& !findstr.Contains("#"))
                        {
                            if (findstr.Trim().Substring(findstr.Trim().Length - source.Length).Equals(source))
                            {
                                sb.Append(target).Append("\r\n");
                            }
                            else
                            {
                                sb.Append(findstr).Append("\r\n");
                            }
                        }
                        else
                        {
                            sb.Append(findstr).Append("\r\n");
                        }
                    }
                    str.Close();
                    StreamWriter sw = new StreamWriter(textFileName, false, System.Text.Encoding.Default);
                    sw.Write(sb.ToString());
                    sw.Close();
                }
                catch
                {
                    return false;
                }
                return true;
            }
    上面是修改的代码
      

  2.   

    首先你要知道Hosts文件的路径,然后读取呀,和平常读写记事本没什么区别,但是你要看到他的格式才行。
    还有,杀毒软件有可能会阻止的,所以一定要异常处理。
      

  3.   

    这是读取的方法:        /// <summary>
            /// 从文本文件读取包含特定字串所在行第一个空格之前的文本(返回找到的第一个)
            /// </summary>
            /// <param name="include">包含特定字串的字串</param>
            /// <returns>包含特定字串的字串第一个空格之前的文本</returns>
            public String ReadLineAddress(String include)
            {
                textFileName=@"C:\WINDOWS\system32\drivers\etc\hosts";
                TextReader tr = new StreamReader(textFileName);
                string findstr = "";
                string retHost = "";
                
                int i = 0;
                while (tr.Peek() > 0)
                {
                    i++;
                    findstr = tr.ReadLine();
                    if (findstr.Contains(include) && !findstr.Contains("#"))
                    {
                        if (findstr.Trim().Substring(findstr.Trim().Length - include.Length).Equals(include))
                        {
                            retHost = findstr.Trim().Substring(0, findstr.Trim().Length - include.Length);
                            break;
                        }
                    }
                    else
                    {
                        findstr = "";
                    }
                }
                tr.Close();
                //string[] texts = findstr.Split(' ');
                //return texts[0];
                return retHost;
            }
      

  4.   


      private void SS()
            {
                string s = Environment.SystemDirectory + "\\drivers\\etc\\hosts";
                if (!File.Exists(s))//判断有没有没有新建个
                {                StreamWriter sw = new StreamWriter(s, false, Encoding.UTF8);
                    sw.WriteLine();
         sw.WriteLine("IP  网站");
                     sw.Close();
                    sw.Dispose();
                }
                System.IO.StreamReader sr = new System.IO.StreamReader(s);
                bool isexist = false;
                while (!sr.EndOfStream)//判断要不要添加
                {
                    string ss = sr.ReadLine();
                    if (ss.IndexOf("#") == 0) continue;
                    if (ss == "IP 网站")
                    {
                        isexist = true;
                        break;
                    }
                }
                sr.Close();
                sr.Dispose();
                if (!isexist)//写入内容
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(s, true);
                    sw.WriteLine();
                    sw.WriteLine("IP  网站");
                          sw.Close();
                    sw.Dispose();
                }        }
    这是我以前写的一个代码!
      

  5.   

    Environment.SystemDirectory 
    这个是得系统的目录
      

  6.   

    要是 读写remote server上的呢 ~