C#禁止访问外网代码该怎么写? 禁止一台机器访问外网?C#怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得最好的办法应该是调用WindowsAPI,在驱动层截获数据包。其次,可以修改网关地址,实现ARP欺骗。 看你怎么定义外网。再说C#禁止访问外网,那么把C#程序关了不就又可以访问了?假设局域网中有一台电脑能访问外网,我的电脑通过它做代理访问,算不算访问外网?总之,这是一个似是而非的问题。lz先普及下网络知识,再来分析吧。最好的办法是,网关做防火墙。 第一个具体怎么实现没研究,但是肯定可以实现第二个,太简单了,自己去了解下ARP。。 用域控可以么?ISA TMG可以提供很好的网关功能,by the way taolinsen首先提出的办法有一定参考性草稿源码送给大家private void button1_Click(object sender, EventArgs e) { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.NetworkInterfaceType.ToString().Equals("Ethernet")) { IPInterfaceProperties ip = adapter.GetIPProperties(); //IP配置信息 if (ip.UnicastAddresses.Count > 0) { ip.UnicastAddresses[0].Address.ToString(); //IP地址 ip.UnicastAddresses[0].IPv4Mask.ToString(); //子网掩码 } if (ip.GatewayAddresses.Count > 0) this.wangguanIP.Add(ip.GatewayAddresses[0].Address.ToString()); //默认网关 if (ip.GatewayAddresses.Count > 2) this.wangguanIP.Add(ip.GatewayAddresses[1].Address.ToString()); //备用网关 if (ip.DnsAddresses.Count > 0) { ip.DnsAddresses[0].ToString(); //首选DNS服务器地址 if (ip.DnsAddresses.Count > 1) ip.DnsAddresses[1].ToString(); ip.DnsAddresses[1].ToString();//备用DNS服务器地址 } } } foreach (var v in this.wangguanIP) { this.textBox1.Text += v + "\r\n"; } } private void button2_Click(object sender, EventArgs e) { ManagementBaseObject inPar = null; ManagementBaseObject outPar = null; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (!(bool)mo["IPEnabled"]) continue; //设置网关地址 inPar = mo.GetMethodParameters("SetGateways"); inPar["DefaultIPGateway"] = new string[] { "1.2.3.4" }; // 1.网关 outPar = mo.InvokeMethod("SetGateways", inPar, null); break; } } private void button3_Click(object sender, EventArgs e) { ManagementBaseObject inPar = null; ManagementBaseObject outPar = null; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (!(bool)mo["IPEnabled"]) continue; //设置DNS inPar = mo.GetMethodParameters("SetGateways"); inPar["DefaultIPGateway"] = this.wangguanIP.ToArray(); // 1.网关 outPar = mo.InvokeMethod("SetGateways", inPar, null); break; } } C#怎么判断查找文件夹中的TXT是否存在 c# 如何捕获系统鼠标中键单击事件 存储文本文档至SQL的实现 C#如何对一个Excel中的某列排序 谁知道哪本书比较适合C#初学者学习 winform 编程啊 我想具体学习各种windows控件的用法 谁能给点教材 寻觅知音(新手必看,对新手很有帮助) 高手帮忙看一下啊,忙了一个下午,总是出现这样的一个错误........ 请问如何通过代码禁止别人ping本机器 谢谢 .net中对word的操作 对话框收缩 c#开发的winform程序怎么在win7系统下不能正常运行? C# 读xml遇到的一个难题.
第二个,太简单了,自己去了解下ARP。。
ISA TMG可以提供很好的网关功能,by the way
首先提出的办法有一定参考性草稿源码送给大家
private void button1_Click(object sender, EventArgs e)
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType.ToString().Equals("Ethernet"))
{
IPInterfaceProperties ip = adapter.GetIPProperties(); //IP配置信息
if (ip.UnicastAddresses.Count > 0)
{
ip.UnicastAddresses[0].Address.ToString(); //IP地址
ip.UnicastAddresses[0].IPv4Mask.ToString(); //子网掩码
}
if (ip.GatewayAddresses.Count > 0)
this.wangguanIP.Add(ip.GatewayAddresses[0].Address.ToString()); //默认网关
if (ip.GatewayAddresses.Count > 2)
this.wangguanIP.Add(ip.GatewayAddresses[1].Address.ToString()); //备用网关
if (ip.DnsAddresses.Count > 0)
{
ip.DnsAddresses[0].ToString(); //首选DNS服务器地址
if (ip.DnsAddresses.Count > 1)
ip.DnsAddresses[1].ToString();
ip.DnsAddresses[1].ToString();//备用DNS服务器地址
}
}
}
foreach (var v in this.wangguanIP)
{
this.textBox1.Text += v + "\r\n";
} } private void button2_Click(object sender, EventArgs e)
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"])
continue; //设置网关地址
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = new string[] { "1.2.3.4" }; // 1.网关
outPar = mo.InvokeMethod("SetGateways", inPar, null);
break;
}
} private void button3_Click(object sender, EventArgs e)
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"])
continue; //设置DNS
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = this.wangguanIP.ToArray(); // 1.网关
outPar = mo.InvokeMethod("SetGateways", inPar, null);
break;
}
}