123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #ifndef __WINDOWS_FIREWALL__
- #define __WINDOWS_FIREWALL__
- /************************************************************************/
- /* Copyright (C), 2016-2020, [Jeff], 保留所有权利;
- /* 模 块 名:防火墙模块;
- /* 描 述:;
- /*
- /* 版 本:[V];
- /* 作 者:[Jeff];
- /* 日 期:[5/8/2017];
- /*
- /*
- /* 注 意:该模块函数,只适用于Windos Vista以下系统;
- /*
- /* 修改记录:[Jeff];
- /* 修改日期:;
- /* 修改版本:;
- /* 修改内容:;
- /************************************************************************/
- #include <netfw.h>
- class WinFireWall
- {
- public:
- // 初始化防火墙;
- virtual BOOL FirewallInit() = 0;
- // 释放防火墙;
- virtual void FirewallCleanup() = 0;
- // 防火墙是否开启;
- virtual BOOL FirewallIsOn() = 0;
- // 开启防火墙;
- virtual BOOL FirewallTurnOn() = 0;
- // 关闭防火墙;
- virtual BOOL FirewallTurnOff() = 0;
- // 应用程序是否允许通过防火墙;
- virtual BOOL FirewallAppIsEnable(IN LPCTSTR lpProcessFileName) = 0;
- // 添加应用程序允许通过防火墙;
- virtual BOOL FirewallAddApp(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName) = 0;
- virtual BOOL FirewallAddAppVista(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL) = 0;
- // 端口号是否允许通过防火墙;
- virtual BOOL FirewallPortIsEnable(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol) = 0;
- // 添加端口允许通过防火墙;
- virtual BOOL FirewallAddPort(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol, IN LPCTSTR lpName) = 0;
- virtual BOOL FirewallAddPortVista(IN LPCTSTR lpRulePorts, IN LPCTSTR lpRuleInterfaceType, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL) = 0;
- // 获取最后的错误值;
- virtual HRESULT HGetLastError() = 0;
- };
- // Vistar以下操作系统;
- class WinFireWallXP:public WinFireWall
- {
- HRESULT m_hr;
- public:
- WinFireWallXP();
- ~WinFireWallXP();
- public:
- // 初始化防火墙;
- BOOL FirewallInit();
- // 释放防火墙;
- void FirewallCleanup();
- // 防火墙是否开启;
- BOOL FirewallIsOn();
- // 开启防火墙;
- BOOL FirewallTurnOn();
- // 关闭防火墙;
- BOOL FirewallTurnOff();
- // 应用程序是否允许通过防火墙;
- BOOL FirewallAppIsEnable(IN LPCTSTR lpProcessFileName);
- // 添加应用程序允许通过防火墙;
- BOOL FirewallAddApp(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName);
- BOOL FirewallAddAppVista(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL){
- return FirewallAddApp(lpRuleAppPath, lpRuleName);
- }
- // 端口号是否允许通过防火墙;
- BOOL FirewallPortIsEnable(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol);
- // 添加端口允许通过防火墙;
- BOOL FirewallAddPort(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol, IN LPCTSTR lpName);
- BOOL FirewallAddPortVista(IN LPCTSTR lpRulePorts, IN LPCTSTR lpRuleInterfaceType, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL);
- // 获取最后的错误值;
- inline HRESULT HGetLastError() { return m_hr; }
- int FireWallTest() ;
- protected:
- INetFwProfile *fwProfile;
- private:
- HRESULT m_hlastresult;
- };
- #if _MSC_VER >= 1600
- // Vista以上操作系统;
- // 防火墙分三部分:domain profile(域)、private profile(私有)、public profile(公共);
- class WinFireWallVista:public WinFireWall
- {
- HRESULT m_hr;
- public:
- WinFireWallVista();
- ~WinFireWallVista();
- public:
- // 初始化防火墙;
- BOOL FirewallInit();
- // 释放防火墙;
- void FirewallCleanup();
- // 防火墙是否开启;
- BOOL FirewallIsOn();
- // 开启防火墙;
- BOOL FirewallTurnOn();
- // 关闭防火墙;
- BOOL FirewallTurnOff();
- // 应用程序是否允许通过防火墙;
- BOOL FirewallAppIsEnable(IN LPCTSTR lpProcessFileName);
- // 添加应用程序允许通过防火墙;
- BOOL FirewallAddApp(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName);
- BOOL FirewallAddAppVista(IN LPCTSTR lpRuleAppPath, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL);
- // 端口号是否允许通过防火墙;
- BOOL FirewallPortIsEnable(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol);
- // 添加端口允许通过防火墙;
- BOOL FirewallAddPort(IN LONG lPortNumber, IN NET_FW_IP_PROTOCOL netProtocol, IN LPCTSTR lpName);
- BOOL FirewallAddPortVista(IN LPCTSTR lpRulePorts, IN LPCTSTR lpRuleInterfaceType, IN LPCTSTR lpRuleName, IN LPCTSTR lpRuleDescription = NULL, IN LPCTSTR lpRuleGroupName = NULL);
- // 获取最后的错误值;
- inline HRESULT HGetLastError() { return m_hr; }
- int FireWallTest();
- public:
- // 获取防火墙配置信息;
- BOOL Get_FirewallSettings_PerProfileType(NET_FW_PROFILE_TYPE2 ProfileTypePassed);
- // Show Firewall ON/OFF state on current profiles;
- HRESULT GetCurrentFirewallState();
- // Show status of 'File and Printer Sharing' rule group on current profiles;
- HRESULT IsRuleGroupCurrentlyEnabled();
- // Show status of 'File and Printer Sharing' rule group on specified profiles;
- HRESULT IsRuleGroupEnabled();
- // For the current firewall profiles display whether the changes to firewall rules will take effect or not;
- HRESULT GetLocalPolicyModifyState();
- // 枚举出所有rule,再判断是否添加过;
- void DumpFWRulesInCollection(INetFwRule* FwRule);
- void Enumerates();
- private:
- INetFwPolicy2* pNetFwPolicy2;
- };
- #endif // _MSC_VER >= 1500
- #endif // __WINDOWS_FIREWALL__;
|