Pergunta

Este é um código para desbloquear qualquer site da listview, mas agora eu quero desbloquear um site que foi previamente bloqueado. Como posso fazer isso?

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");
Foi útil?

Solução

Não é o caminho certo para bloquear um site, mas aqui é a maneira de 'desbloquear' um site que está 'bloqueado' por seu código é simplesmente:

  1. ler o arquivo host
  2. encontrar a URL do site por regex
  3. apagar a linha
  4. Salve o arquivo.

Outras dicas

Você pode usar funções System.IO.File & ReadAllLines de WriteAllLines e apenas retirar a linha que deseja remover

        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());

Código Golf

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)));

Basta substituir arquivo hosts ao original.

Se você quiser arquivo hosts originais então eu posso enviar-lhe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top