关于C#操作防火墙,阻止程序联网
//开启服务、开启防火墙
public void OpenFileWall()
{
// 1. 判断当前系统为XP或Win7
RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"Software\\Microsoft\\Windows NT\\CurrentVersion");
var VersionName = rk.GetValue("ProductName").ToString();
rk.Close();
RegistryKey key;
//获取防火墙服务名称
var ServicerName = "";
if (VersionName.Contains("XP"))
{
ServicerName = "SharedAccess";
key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\\CurrentControlSet\\Services\\SharedAccess", true);
}
else
{
ServicerName = "MpsSvc";
key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\\CurrentControlSet\\Services\\MpsSvc", true);
}
// 2. 判断防火墙启动类型是否为禁止,若为禁止设置其为自动
var StartIndex = key.GetValue("Start").ToString();
if (StartIndex == "")
{
ProcessStartInfo objProInfo = new ProcessStartInfo();
objProInfo.FileName = "cmd.exe";
objProInfo.CreateNoWindow = false;
objProInfo.WindowStyle = ProcessWindowStyle.Hidden;
objProInfo.Arguments = "/c sc config " + ServicerName + " start= " + "auto";
Process.Start(objProInfo);
//挂起线程1s后启动服务
System.Threading.Thread.Sleep();
}
key.Close();
// 3. 判断防火墙服务是否启动
ServiceController sc = new ServiceController(ServicerName);
if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) || (sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
sc.Start();
//挂起线程1s后开启防火墙
System.Threading.Thread.Sleep();
}
// 4.开启防火墙
if (VersionName.Contains("XP"))
{
RegistryKey rekey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile", true);
var Enablefilewall = rekey.GetValue("EnableFirewall").ToString();
if (Enablefilewall == "")
{
rekey.SetValue("EnableFirewall", );
}
rekey.Close();
}
else
{
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 启用<高级安全Windows防火墙> - 专有配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, true);
// 启用<高级安全Windows防火墙> - 公用配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, true);
}
} //关闭防火墙
public void CloseFileWall()
{
// 1. 判断当前系统为XP或Win7
RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"Software\\Microsoft\\Windows NT\\CurrentVersion");
var VersionName = rk.GetValue("ProductName").ToString();
rk.Close();
// 2.关闭防火墙
if (VersionName.Contains("XP"))
{
RegistryKey rekey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile", true);
var Enablefilewall = rekey.GetValue("EnableFirewall").ToString();
if (Enablefilewall == "")
{
rekey.SetValue("EnableFirewall", );
}
rekey.Close();
}
else
{
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 禁用<高级安全Windows防火墙> - 专有配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, false);
// 禁用<高级安全Windows防火墙> - 公用配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, false);
}
} //当检测不满足条件,阻止所有访问,只允许本程序运行
public void UnAllowOpenFW()
{
//判断系统属于xp还是win7
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"Software\\Microsoft\\Windows NT\\CurrentVersion"))
{
var VersionName = rk.GetValue("ProductName").ToString();
if (VersionName.Contains("XP"))
{
// 1. 创建一个认证程序类的实例
INetFwAuthorizedApplication Fwapp = (INetFwAuthorizedApplication)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
Fwapp.Name = "360安全浏览器";
//Fwapp.Name = Application.ProductName;
Fwapp.ProcessImageFileName = "C:\\Documents and Settings\\Administrator\\Application Data\\360se6\\Application\\360se.exe";
//Fwapp.ProcessImageFileName = Application.ExecutablePath;
//是否启用
Fwapp.Enabled = true;
// 2. 创建firewall管理类的实例 ,添加程序到防火墙例外
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(Fwapp);
}
else
{
// 1. 创建实例,阻止所有的出站连接
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
//启用或禁用<高级安全Windows防火墙> - 专有配置文件的出站连接
firewallPolicy.set_DefaultOutboundAction(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, NET_FW_ACTION_.NET_FW_ACTION_BLOCK);
//启用或禁用<高级安全Windows防火墙> - 公用配置文件的出站连接
firewallPolicy.set_DefaultOutboundAction(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, NET_FW_ACTION_.NET_FW_ACTION_BLOCK);
// 2. 创建本程序出站规则,只运行本程序的连接。
INetFwRule2 OutBoundRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
OutBoundRule.Name = "360安全浏览器";
//OutBoundRule.Name = Application.ProductName;
OutBoundRule.Description = "360安全浏览器";
//程序路径
OutBoundRule.ApplicationName = "C:\\Users\\Administrator\\AppData\\Roaming\\360se6\\Application\\360se.exe";
//OutBoundRule.ApplicationName = Application.ExecutablePath;
OutBoundRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
OutBoundRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
OutBoundRule.Enabled = true;
// 3.添加出站规则
firewallPolicy.Rules.Add(OutBoundRule);
}
}
} //检测满足条件,开启所有访问
public void AllowOpenFW()
{
//判断系统属于xp还是win7
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"Software\\Microsoft\\Windows NT\\CurrentVersion"))
{
var ApplicationName = "360安全浏览器";
// var ApplicationName = Application.ProductName;
var VersionName = rk.GetValue("ProductName").ToString();
if (VersionName.Contains("XP"))
{
// 创建firewall管理类的实例 ,删除添加程序到防火墙例外
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(ApplicationName);
}
else
{
// 1. 创建实例,允许所有程序的连接。
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
//启用或禁用<高级安全Windows防火墙> - 专有配置文件的出站连接
firewallPolicy.set_DefaultOutboundAction(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, NET_FW_ACTION_.NET_FW_ACTION_ALLOW);
//启用或禁用<高级安全Windows防火墙> - 公用配置文件的出站连接
firewallPolicy.set_DefaultOutboundAction(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, NET_FW_ACTION_.NET_FW_ACTION_ALLOW);
// 2. 删除本程序的出站规则删除规则
firewallPolicy.Rules.Remove(ApplicationName);
}
}
}
关于C#操作防火墙,阻止程序联网的更多相关文章
- Win7 如何阻止程序联网
https://jingyan.baidu.com/article/9113f81b03d4e12b3214c7c3.html
- C#操作防火墙控制电脑某些软件联网
问题: 目前公司软件刚由单机软件更改为联网软件,许多客户反映希望能够有一个功能来控制电脑上某些必用软件,如qq,公司软件联网,而其他不必要的如网页,游戏等软件不允许联网,于是向公司反映希望可以有一个功 ...
- 教你win7解除阻止程序运行怎么操作
教你win7解除阻止程序运行怎么操作 来源:http://www.windows7en.com/jiaocheng/27594.html 有时候我下载的软件,被win7系统禁止了运行了时软件不能使用, ...
- C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出
C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数 注意:在VS中调试执行时,在处理程序例程中设置断 ...
- Windows 7防火墙阻止了远程桌面连接的解决方法
在[系统属性]中已经设置了允许远程桌面连接了,但是还是不能远程桌面的话,很可能是你的windows防火墙处于“启用”状态,防火墙阻止了windows 7系统的远程桌面连接.你可以使用以下的方法检查解决 ...
- netsh命令操作防火墙
这里的netsh命令操作防火墙主要是在Windows 7及以上版本,以示例说明: 1.防火墙入方向添加一条规则,规则名字:RDP,协议tcp,动作为允许,端口号3389:简而言之,就是允许其他机器远程 ...
- python(三)一个文件读写操作的小程序
我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...
- java PriorityBlockingQueue 基于优先级队列,的读出操作可以阻止.
java PriorityBlockingQueue 基于优先级队列.的读出操作可以阻止. package org.rui.thread.newc; import java.util.ArrayLis ...
- 远程连接MySQL,防火墙阻止访问,解决方法
远程连接MySQL,防火墙阻止访问,解决方法 xp/2003添加防火墙例外端口 打开防火墙,选择例外选项卡,添加端口 名称:mysqlport 端口号:3306 选中TCP win7添加防火墙例外 ...
随机推荐
- 解决OracleConnection ORA-1017 和 HRESULT:0x8007000B 错误
试图加载格式不正确的程序. (异常来自HRESULT:0x8007000B) 解决方案: IIS下 winform下: ORA-1017 错误
- fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因
很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...
- SQL 中 EXISTS 与 NOT EXISTS
带有 EXISTS 操作符的子查询不返回任何数据,只产生逻辑真值 'true' 或逻辑假值 'false'.带有 EXISTS 操作符的子查询都是相关子查询. 相关子查询:子查询的条件依赖父查询. E ...
- Android开发-之环境的搭建
关于Android开发可以使用的工具有eclipse和Android studio等,这两个工具都各有各的好处和不足.studio是谷歌推出的一款开发工具,而我们都知道Android就是谷歌公司的,所 ...
- MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named ‘Index')
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 错误信息 和主页的默认控制器冲突了,修改下Areas里面的默认控制器就可以了
- 【转】SQL删除重复数据方法,留着备用
感谢孙潇楠前辈的总结,地址http://www.cnblogs.com/sunxiaonan/archive/2009/11/24/1609439.html 例如: id name ...
- 前端学PHP之字符串函数
× 目录 [1]特点 [2]输出 [3]空格[4]大小写[5]HTML[6]格式化[7]比较 前面的话 字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的.信息的分类.解析.存储 ...
- Android获取短信验证码
Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发 ...
- TortoiseGit与github实现项目的上传
1. 下载并安装相关软件 这里主要涉及的软件包括msysgit和TortoiseGit. msysgit的下载地址:http://msysgit.googlecode.com/files/Git-1. ...
- SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率
应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助.大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会 ...