在插件中增加检测防火墙是否开启的功能


在扫描项目的插件中增加一项检测防火墙的功能:

1、声明一个存储防火墙状态的枚举类型并且实例化一个对象作为全局变量

//@author Denny
	// \brief 防火墙状态
	enum FIREWALL_STATUS
	{
		FIREWALLUNKNOWN = 0,
		FIREWALLCLOSE,
		FIREWALLOPEN
	};

       FIREWALL_STATUS m_eFirewall;

2、通过函数从注册表中获取防火墙状态

//获取防火墙状态
	FIREWALL_STATUS CSystemInfo::GetFireWallStatus()
	{
		LOG4CPLUS_TRACE(*g_Root, "获取防火墙状态开始");
		FIREWALL_STATUS status = FIREWALLUNKNOWN;
		HKEY pHkey;
		TCHAR chSubKey[] = _T("SYSTEM\\CurrentControlSet\\services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile");
		if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, chSubKey, 0, KEY_READ, &pHkey))
		{
			LOG4CPLUS_ERROR(*g_Root, "打开子键失败");
			return status;
		}

		DWORD type = REG_DWORD; //EnableFireWall的类型
		DWORD dwdata = -1;//EnableFireWall的值
		DWORD dwsize = sizeof(DWORD);//EnableFireWall的大小
		if (ERROR_SUCCESS != RegQueryValueEx(pHkey, _T("EnableFireWall"), 0, &type, (LPBYTE)&dwdata, &dwsize))
		{
			LOG4CPLUS_ERROR(*g_Root, "查询键值失败");
			RegCloseKey(pHkey);
			return status;
		}
		if (1 == dwdata)
		{
			status = FIREWALLOPEN;
		}
		else if (0 == dwdata)
		{
			status = FIREWALLCLOSE;
		}

		RegCloseKey(pHkey);
		LOG4CPLUS_INFO(*g_Root, "防火墙状态: " << status);
		LOG4CPLUS_TRACE(*g_Root, "获取防火墙状态结束");
		return status;
	}

3、将获取的防火墙状态的值赋给全局变量

m_eFirewall = GetFireWallStatus(); //获取防火墙状态的返回值</span>


4、用string_t类型的数据存储状态值

pugi::string_t szWinVer, szWinSP, szWin64, szUserName, szAdmin, szInternet, szUAC,szFireWall;
		szUserName = m_szUserName;

5、在_ParseSystemInfo中解析防火墙状态
void CSystemInfo::_ParseSystemInfo(pugi::string_t& szWinVer, pugi::string_t& szWinSP, pugi::string_t& szWin64,
		pugi::string_t& szAdmin, pugi::string_t& szInternet, pugi::string_t& szUAC, pugi::string_t& szFireWall)
{
<span style="white-space:pre">		</span>switch (m_eFirewall)
		{
		case FIREWALLUNKNOWN:
			szFireWall = _T("查询注册表失败");
			break;
		case FIREWALLOPEN:
			szFireWall = _T("开启");
			break;
		case FIREWALLCLOSE:
			szFireWall = _T("关闭");
			break;
		default:
			szFireWall = _T("未知");
			break;
		}
}

6、将状态的值放入到vector容器中

vecInfo.push_back(szFireWall);//将防火墙的状态值放入vector容器


7、最后和其他检测项目例如系统信息,用户信息,网络状态等等一起在vector容器中交给其他操作实现







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值