我正在尝试开发一种家长软件,可以安排在特定时间间隔阻止互联网。我怎样才能在 C# 中做到这一点?
我可以System.Net, System.Net.NetworkInformation
在 c# 中使用命名空间吗?是否有任何内置功能用于阻止/禁用网络?
我正在尝试开发一种家长软件,可以安排在特定时间间隔阻止互联网。我怎样才能在 C# 中做到这一点?
我可以System.Net, System.Net.NetworkInformation
在 c# 中使用命名空间吗?是否有任何内置功能用于阻止/禁用网络?
using System.Diagnostics;
using System.IO;
using System.Reflection;
private void button1_Click(object sender, EventArgs e)
{
//ADDED A REFERENCE TO SYSTEM.SERVICEPROCESS VIA PROJECT->ADD REFERENCE, .NET tab
System.ServiceProcess.ServiceController scPAServ = new System.ServiceProcess.ServiceController("PolicyAgent"); //IPSec
if (scPAServ.Status != System.ServiceProcess.ServiceControllerStatus.Running)
{
scPAServ.Start(); //Start If Not Running
}
string[] strCommands = { @"-w REG -p ""Firewall"" -r ""Block All"" -f *:*:*+*:*:* -n BLOCK -x" ,
@"-w REG -p ""Firewall"" -r ""Allow LAN"" -f 0:*:*+192.168.10.*:*:* -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""DNS"" -f 0:*:UDP+223.211.190.23:53:UDP 0:*:UDP+223.211.190.24:53:UDP 0:*:TCP+223.211.190.23:53:TCP 0:*:TCP+223.211.190.24:53:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""POP3"" -f 0:*:TCP+*:110:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""POP3S"" -f 0:*:TCP+*:995:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""FTP Control"" -f 0:*:TCP+*:21:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""FTP Data"" -f 0:*:TCP+*:20:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""IMAP"" -f 0:*:TCP+*:143:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""HTTP"" -f 0:*:TCP+*:80:TCP -n PASS -x" ,
@"-w REG -p ""Firewall"" -r ""HTTPS"" -f 0:*:TCP+*:443:TCP -n BLOCK -x" ,
@"-w REG -p ""Firewall"" -r ""PROXY"" -f 0:*:TCP+*:8080:TCP 0:*:TCP+*:3128:TCP 0:*:TCP+*:8081:*:TCP 0:*:TCP+*:8000:TCP -n BLOCK -x"};
for (int i = 0; i < strCommands.Length; i++) //Loop through each Command String
{
ProcessStartInfo psiStart = new ProcessStartInfo(); //Process To Start
psiStart.CreateNoWindow = true; //Invisible
psiStart.FileName = Directory.GetParent(Assembly.GetExecutingAssembly().Location) + "\\ipseccmd.exe"; //IPSEC
psiStart.Arguments = strCommands[i]; //Break Command Strings Apart
psiStart.WindowStyle = ProcessWindowStyle.Hidden; //Invisible
Process p = System.Diagnostics.Process.Start(psiStart); //Start Process To Block Internet Connection
}
}
private void button2_Click(object sender, EventArgs e)
{
System.ServiceProcess.ServiceController scPAServ = new System.ServiceProcess.ServiceController("PolicyAgent"); //IPSec
if (scPAServ.Status != System.ServiceProcess.ServiceControllerStatus.Running) //If Not Running
{
scPAServ.Start();
}
string strCommands = @"-w REG -p ""Firewall"" -r ""Block All"" -f *:*:*+*:*:* -n BLOCK -y"; //Commands To Send
ProcessStartInfo psiStart = new ProcessStartInfo(); //Process To Start
psiStart.CreateNoWindow = true; //Invisible
psiStart.FileName = Directory.GetParent(Assembly.GetExecutingAssembly().Location) + "\\ipseccmd.exe"; //IPSEC
psiStart.Arguments = strCommands; //Give Command String As Argument
psiStart.WindowStyle = ProcessWindowStyle.Hidden; //Invisible
Process p = System.Diagnostics.Process.Start(psiStart); //Start Process To Stop Internet Connection
}
}
有关详细信息,请参阅http://forums.codeguru.com/showthread.php?512380-C-.NET-4.0-Blocking-all-internet-traffic-system-wide链接。