1

这是一些从 listview 取消阻止任何网站的代码,但现在我想取消阻止以前被阻止的网站。我怎样才能做到这一点?

String path = @"C:\Windows\System32\drivers\etc\hosts";
StreamWriter sw = new StreamWriter(path, true);
String sitetoblock = "\n 127.0.0.1 http://"+listView1.SelectedItems[0].Text+"";
sw.Write(sitetoblock);
sw.Close();
MessageBox.Show(listView1.SelectedItems[0].Text " blocked");
4

4 回答 4

7

这不是阻止网站的正确方法,但这里是“解除阻止”被您的代码“阻止”的网站的方法很简单:

  1. 读取主机文件
  2. 通过正则表达式查找网站网址
  3. 删除该行
  4. 保存文件。
于 2009-05-15T11:09:02.933 回答
3

您可以使用System.IO.File's ReadAllLines&WriteAllLines功能,只需去掉要删除的行

        string path = @"C:\Windows\System32\drivers\etc\hosts";

        string [] lineArray = System.IO.File.ReadAllLines(path);

        List<string> lines = blah.ToList();

        string sitetoUNblock = string.Format("127.0.0.1 http://{0}", listView1.SelectedItems[0].Text);

        lines.Remove(sitetoUNblock);

        System.IO.File.WriteAllLines(path, lines.ToArray());
于 2009-05-15T11:12:02.177 回答
1

代码高尔夫

string path = @"C:\Windows\System32\drivers\etc\hosts";
string itemText = listView1.SelectedItems[0].Text;
File.WriteAllLines(path, File.ReadAllLines(path).Where(site=>site!=string.Format("127.0.0.1 http://{0}", itemText)));
于 2009-05-15T12:34:54.787 回答
1

只需将主机文件替换为原始文件。

如果您想要原始主机文件,那么我可以发送给您。

于 2009-05-17T02:51:54.687 回答