程序常通过网络进行通信,有时某些通信端口会被防火墙阻止导致程通信异常,一般情况要关闭防火墙或配置白名单比较麻烦。每次启动通过cmd命令添加防火墙例外可能造成程序经常使用从而多次重复添加同一规则,或程序考到磁盘的不同位置还要重新添加例外规则等。楼主比较懒所以写个简单demo,先查询防火墙,如果白名单中没有目标程序则将其名称和路径添加到例外规则中,如果目标程序已经存在于防火墙例外规则中则直接返回防止重复添加。

代码如下:

#include "stdafx.h"
#include <iostream>using namespace std;bool FirewallSet(string dir, string name)
{// chcp 437 这个命令把操作系统默认语言强制转换成英文显示,便于解析。string filedir = dir;string cmd = "chcp 437 && netsh advfirewall firewall show rule name =";//先查询程序是否在防火墙白名单中cmd.append(name);cmd += " verbose";char PipeResult[1024] = { 0 };char buffer[128] = { 0 };// 通过管道调用命令FILE *pPipe;if (NULL == (pPipe = _popen(cmd.c_str(), "rt"))){printf("error!");return false;}while (fgets(buffer, 128, pPipe)){strcat(PipeResult, buffer);if (strstr(PipeResult, filedir.c_str()) != NULL){_pclose(pPipe);return true;}}cmd = "chcp 437 && netsh advfirewall firewall add rule name =";cmd += name;cmd.append(" dir = in action = allow program = \"");//拼接所需传输的命令cmd += filedir;cmd.append("\"");if (NULL == (pPipe = _popen(cmd.c_str(), "rt"))){printf("error!");return false;}// 打印结果printf("%s", PipeResult);_pclose(pPipe);return true;
}int _tmain(int argc, _TCHAR* argv[])
{bool flag = FirewallSet("C:\\windows\\test\\123.exe","123");//将C:\\windows\\test\\123.exe加入防火墙白名单,规则名为123if (flag){cout << "Firewall Set Successful !" << endl;}else{cout << "FAILED !" << endl;}system("pause");return 0;}

demo下载地址:https://download.csdn.net/download/wangx_x/11590112

C++添加防火墙例外——检测目标程序不在例外列表时才进行添加,防止重复添加相关推荐

  1. Windows批量添加防火墙例外端口

    Windows下批量添加防火墙例外端口,查了网上资料,基本上都是使用"Netsh命令",循环增加端口,这会导致建立的规则特别多,不便于管理,查了下微软的资料,原来是Netsh命令, ...

  2. c# 添加防火墙例外端口_C#添加删除防火墙例外(程序、端口)

    一. 添加 COM 引用 在引用里,选择 COM 页, 找到 NetFwTypeLib, 确定即可 二. 添加允许通过防火墙的例外程序 using System; using System.Colle ...

  3. Linux的iptables在指定的防火墙规则序号前添加防火墙规则

    一.问题背景 背景:公司安全部门检测到公司的hadoop集群中存在Yarn的未授权漏洞,即8080.8088端口外网可以访问的问题,于是,产生了给服务器增加防火墙规则的需求,具体如下: 二.问题处理 ...

  4. ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...

    利用 ICMP 隧道穿透防火墙 转自:http://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/ 以前穿透防火墙总是使用 SSH 隧道 ...

  5. NSIS 打包文件添加防火墙白名单

    概述 如果应用程序使用网络,担心被防火墙拦截的话,通常有两种解决方案,第一种是直接关闭电脑防火墙,但是会比较麻烦,每台电脑安装软件后都需要设置防火墙状态, 并且关闭防火墙电脑会不安全:第二种方式就是添 ...

  6. Linux IPTables:如何添加防火墙规则

    摘要:本文介绍了如何使用"iptables -A"命令添加 iptables 防火墙规则. 本文分享自华为云社区<Linux IPTables:如何添加防火墙规则(使用允许 ...

  7. 将程序添加防火墙白名单

    将程序添加防火墙白名单 查考文档:https://support.microsoft.com/en-us/kb/947709 add rule: netsh advfirewall firewall ...

  8. 基于Ryu 防火墙的检测和解决异常入侵的流量--实验

    基于Ryu 防火墙的检测和解决异常入侵的流量--实验 基于Ryu 防火墙的检测和解决异常入侵的流量 防火墙规则 实验仿真环节: 1.下载代码到本地 2.安装相关依赖库 3.设置openflow1.3 ...

  9. [YOLOv7/YOLOv5系列算法改进NO.5]改进特征融合网络PANET为BIFPN(更新添加小目标检测层yaml)

     前      言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是在处理一些复杂背景问题的时候,还是容易出现错漏检的问题.此后的系列文章,将重点对YOLOv5的如何改 ...

最新文章

  1. pandas使用replace函数替换dataframe中的值:replace函数使用正则表达式对dataframe中的值进行替换
  2. AI Debate2 | 李飞飞提「AI北极星」,卡尼曼指「系统 1」理解有误
  3. (转)一个带自定义分页,排序功能的DATAGRID控件(公开源码)
  4. upload-labs-master文件上传靶场第七关详解
  5. 数据预处理|关于标准化和归一化的一切
  6. 《大数据》2015年第2期“专题”——关于大数据交易核心法律问题 —— 数据所有权的探讨及建议...
  7. iOS开发:创建真机调试证书
  8. python 输入列表 返回每个元素出现的次数
  9. PHP--字符串合并与分割
  10. java接口自动化框架_java接口自动化测试框架及断言详解
  11. ASP.NET MVC3 RenderPartial 传入空Model时出现字典类型错误
  12. TrinityCore3.3.5环境搭建
  13. AndroidQQ登录
  14. 计算机 上的图片怎样加密码,电脑照片文件怎么加密?电脑文件加密软件介绍...
  15. 微信公众号CSS样式常见问题解析
  16. .csv是什么文件格式,什么软件可以打开?xls与csv文件是什么区别?功能和作用上有什么不同?
  17. 大数据学习——常用的数据分析法和模型
  18. 决策树【机器学习笔记简摘】
  19. 【读书笔记】《王道论坛计算机考研机试指南》第七章
  20. python多项式回归_如何在Python中实现多项式回归模型

热门文章

  1. [linux] 命令输出不打印
  2. MapStruct Unknown property “xx“ in result type XXX. Did you mean “null“?
  3. 腾讯的核心竞争力是什么!
  4. wps里面函数怎么使用_WPS中函数的使用方法 - 卡饭网
  5. 《版式设计——日本平面设计师参考手册》—第1章如何存储旧版本的InDesign文件...
  6. freenas作无盘服务器,Freenas11.3 jail创建失败解决办法
  7. Python读取Excel日期列读出来是数字的处理
  8. 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
  9. (PC+WAP)织梦模板财经新闻资讯类网站
  10. 转溪风吴韵のPower Design下载地址