我正在寻找c#中API的指针,这将允许我通过打开和关闭连接来控制我的Internet连接.
我想写一个小的控制台应用程序,允许我打开和关闭我的访问权限,允许生产力飞涨:)(以及在过程中学习的东西)
谢谢 !!
Gre*_*reg 44
如果您使用的是Windows Vista,则可以使用内置防火墙阻止任何Internet访问.
以下代码创建一个防火墙规则,阻止所有网络适配器上的任何传出连接:
using NetFwTypeLib; // Located in FirewallAPI.dll
...
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Description = "Used to block all internet access.";
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.Name = "Block Internet";
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Add(firewallRule);
Run Code Online (Sandbox Code Playgroud)
如果要再次允许Internet访问,请删除规则:
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Remove("Block Internet");
Run Code Online (Sandbox Code Playgroud)
这是我使用的其他一些代码的略微修改,所以我不能保证它会起作用.再一次,请记住,您需要Windows Vista(或更高版本)和管理权限才能使用.
链接到防火墙API文档.
这是我目前正在使用的(我的想法,不是 api):
System.Diagnostics;
void InternetConnection(string str)
{
ProcessStartInfo internet = new ProcessStartInfo()
{
FileName = "cmd.exe",
Arguments = "/C ipconfig /" + str,
WindowStyle = ProcessWindowStyle.Hidden
};
Process.Start(internet);
}
Run Code Online (Sandbox Code Playgroud)
断开互联网连接: InternetConnection("release");
连接到互联网: InternetConnection("renew");
断开连接只会删除对互联网的访问(它会在 wifi 图标中显示一个警告图标)。连接可能需要五秒钟或更长时间。
题外话:
在任何情况下,您可能想要检查是否已连接(当您使用上面的代码时),我最好建议这样做:
System.Net.NetworkInformation;
public static bool CheckInternetConnection()
{
try
{
Ping myPing = new Ping();
String host = "google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
return (reply.Status == IPStatus.Success);
}
catch (Exception)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31562 次 |
| 最近记录: |