限制上网(C#)!!!
最近寝室的人都很晚才睡觉,每天晚上都要上网到三四点钟,因为要考试了。。所以课基本上都停了。。。现在主要是复习。。。。但是寝室的人都不复习。。。晚晚上都上的很晚。。看着寝室的都这样。。我心里非常急呀。。。毕竟是一个寝室的。。。直接说吧。。又不好得。。但又不想这样放纵他们。。。。
嘿嘿。。。。因为寝室是牵的宽带。。。所以我们用了一个路由。。。刚开始我是直接在路由里面设置上网时段。。。。不过后来他们好象去问了别人。。然后就来问我路由密码。。。。毕竟路由是大家一起买的。。所以就把密码给了他们。。。可想而知。。。后来他们又把限制给取消了。。。
哎。。想了很久都找不到什么合适的方法来限制。。
去网上去求助了一下。。。网友说让我去网上下几款软件试一下。。。。于是去网上下了几款软件。。效果都不怎么好。。。
心烦呀。。想了很久都不知道怎么办。。。。。绞尽脑汁突然想起怎么也是学编程的。。。写一个软件,且不简单。。
哈哈。。。于是开始设计思路。。。
刚开始是想在时间为11点的时候就自动切断连接。。。但是。寝室是一个内网。。要切断网网是一个难题。。要是禁用本地连接。。又容易发现。。。该怎么办呢????
呵呵。。突然想到。。寝室内网是自动获取IP。与网关和DNS。。。如果我刻意设置不在其内。。。。。。。呵呵。。这样又隐秘。。又能达到不破坏内网。。。又可以断开外网。。。。。
下面就是我用C#写的一段代码。。。。。。
————————————————————————————————————————————————————
namespace WindowsApplication40
{
public partial class Form1 : Form
{
int b = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;//设置timer控件可用
timer1.Interval = 60000;//设置timer控件每一分钟执行一次timer_tick事件
}
private void timer_Tick(object sender, EventArgs e)//达到每一分钟扫描本地连接,并进行设置!!
{
string i = DateTime.Now.Hour.ToString();
double d = double.Parse(i);
if (d ==23 || d < 8) //当时间在23点或者8点以前进行设置!!
{ SetNetworkAdapter();
b = 0;
}
else
{
if (b < 3) //如果扫描连续3次都不在23点或者 8点以前..就默认设置!!!
{
SetNetworkAdapter2();
b++;
}
}
}
static void SetNetworkAdapter()//嘿嘿。。。下面就是乱添的IP。。。目的是为了上不了外网。。。
{
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;
//设置ip地址和子网掩码
inPar = mo.GetMethodParameters("EnableStatic");
inPar["IPAddress"] = new string[] { "192.168.77.248", "192.168.77.249" };// 1.备用 2.IP
inPar["SubnetMask"] = new string[] { "255.255.255.0", "255.255.255.0" };
outPar = mo.InvokeMethod("EnableStatic", inPar, null);
//设置网关地址
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = new string[] { "192.168.77.2", "192.168.77.254" }; // 1.网关;2.备用网关
outPar = mo.InvokeMethod("SetGateways", inPar, null);
//设置DNS
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
inPar["DNSServerSearchOrder"] = new string[] { "211.211.211.211", "211.211.211.211" }; // 1.DNS 2.备用DNS
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
break;
}
}
static void SetNetworkAdapter2()//下面是正确的IP!!
{
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;
//设置ip地址和子网掩码
inPar = mo.GetMethodParameters("EnableStatic");
inPar["IPAddress"] = new string[] { "192.168.0.46", "192.168.0.48" };// 1.备用 2.IP
inPar["SubnetMask"] = new string[] { "255.255.255.0", "255.255.255.0" };
outPar = mo.InvokeMethod("EnableStatic", inPar, null);
//设置网关地址
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = new string[] { "192.168.0.1", "192.168.0.1" }; // 1.网关;2.备用网关
outPar = mo.InvokeMethod("SetGateways", inPar, null);
//设置DNS
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
inPar["DNSServerSearchOrder"] = new string[] { "61.128.128.68", "61.128.192.68" }; // 1.DNS 2.备用DNS
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
break;
}
}
}
}
弄好后。。运行时隐藏截面。。。在任务栏隐藏!!。。。。进程改为 svch0st.exe ...
呵呵。。后来他们去找老师呀。。。网管呀。。。都没解决。。。呵呵。。
现在看着他们。。每天早睡早起。。努力复习。。。书放于枕!! 欣慰呀。。。。。。 要得,这个思路不错,但不知实际运行的效果如何?
加油!再搞点好东西出来!
回复 2# 的帖子
已经运行了个把星期了。。。一直没问题。。运行正常。。。 都是高手啊 不懂,但我来过了。 43514039 给你一个编程群...去和高手交流下..............回复 6楼 JoeyMoe 的帖子
谢谢 到网上去下一套网管软件就可以达到这样的功能页:
[1]

