C# 如何读写 hosts 文件 C# 如何读写 hosts 文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <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; }上面是修改的代码 首先你要知道Hosts文件的路径,然后读取呀,和平常读写记事本没什么区别,但是你要看到他的格式才行。还有,杀毒软件有可能会阻止的,所以一定要异常处理。 这是读取的方法: /// <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; } 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(); } }这是我以前写的一个代码! Environment.SystemDirectory 这个是得系统的目录 要是 读写remote server上的呢 ~ 这个样的水平在大连有没有人要? c#图片问题 高手进来一下,寻求思路。急,老板只给5天时间啊,帮帮忙 更改dataGrid里的数据后怎么更新数据库? aspnet_wp.exe 占CPU100% 100分求问如何制作用户登陆系统! 着急,问调用 php的webservice的 认证问题 winform中datagrid中数据更改问题 高手请进来帮小弟看一个问题!急急急急急急急急急急急急急急急急急急急急急急 那位前辈指点:什么时间用控件,什么时间用组件,二者区分和联系。 求助:DataGridView如何按列绑定? C#程序问题
/// <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;
}
上面是修改的代码
还有,杀毒软件有可能会阻止的,所以一定要异常处理。
/// 从文本文件读取包含特定字串所在行第一个空格之前的文本(返回找到的第一个)
/// </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;
}
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();
} }
这是我以前写的一个代码!
这个是得系统的目录