【问题标题】:Block/Redirect IP's or hosts without hosts file in c# 2.0在 c# 2.0 中阻止/重定向 IP 或没有主机文件的主机
【发布时间】:2016-01-22 09:58:39
【问题描述】:
这个问题很难找到答案。我想阻止域列表,例如,如果 google.com 下的任何内容进入 DNS 并被接收,它将重定向或关闭连接,从而阻止恶意网站访问主机计算机。我听说 iphlpapi.dll 对此很有用,但是关于这个 DLL 及其用法的用户友好信息很少或根本没有。我不会超过 .net 2.0,我的语言是 C#。谢谢:)。
我愿意(至少其中一项)
阻止来自主域的一组域
阻止某个 IP 或范围
从主域重定向一组域
重定向某个 IP 或范围。
最好不需要管理员或 UAC 权限。
谢谢:)
【问题讨论】:
标签:
c#
redirect
dns
ip
block
【解决方案1】:
如果您使用的是 Windows Vista/7,则可以使用内置防火墙阻止任何使用 NetFwTypeLib(位于 FirewallAPI.dll 中)的主机
using System;
using System.Runtime.InteropServices;
using System.Text;
using NetFwTypeLib;
namespace WinFirewall
{
public class FWCtrl
{
const string guidFWPolicy2 = "{E2B3C97F-6AE1-41AC-817A-F6F92166D7DD}";
const string guidRWRule = "{2C5BC43E-3369-4C33-AB0C-BE9469677AF4}";
static void Main(string[] args)
{
FWCtrl ctrl = new FWCtrl();
ctrl.Setup();
}
public void Setup()
{
Type typeFWPolicy2 = Type.GetTypeFromCLSID(new Guid(guidFWPolicy2));
Type typeFWRule = Type.GetTypeFromCLSID(new Guid(guidRWRule));
INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(typeFWPolicy2);
INetFwRule newRule = (INetFwRule)Activator.CreateInstance(typeFWRule);
newRule.Name = "InBound_Rule";
newRule.Description = "Block inbound traffic from 192.168.0.2 over TCP port 4000";
newRule.Protocol = (int) NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
newRule.LocalPorts = "4000";
newRule.RemoteAddress = "192.168.0.2";
newRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
newRule.Enabled = true;
newRule.Grouping = "@firewallapi.dll,-23255";
newRule.Profiles = fwPolicy2.CurrentProfileTypes;
newRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
fwPolicy2.Rules.Add(newRule);
}
}
}
【解决方案2】:
试试string restricted ="IP.IP.IP";
也可以是网址string restricted = "www.website.com";