#ifndef CWINDOWSFIREWALL_H #define CWINDOWSFIREWALL_H #include #include #include #include #include class CProcessData { public: DWORD pid = 0; std::wstring sExeName = L""; std::wstring sExePath = L""; bool bDisabled = false; }; class CWindowsFireWall { public: CWindowsFireWall()=delete; CWindowsFireWall(DWORD pid, bool bcheck = true); ~CWindowsFireWall(); void removeLastRules(); private: bool init(); bool setWallOn(); bool disableAllApp(); void cleanup(); bool getAllAppNameList(std::vector &vAppList); HRESULT WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2); void setAllRulesEnabled(VARIANT_BOOL bEnable); void threadProc(); void checkInprogressFireWall(); void uploadAppLog(std::vector &vAppList); void checkRulesIsEnabled(); std::thread *m_pThrd; DWORD m_wthreadID; bool m_bIsRun = true; HRESULT m_comInit = E_FAIL; INetFwPolicy2 *m_pNetFwPolicy2 = NULL; QString m_sErrMsg; std::vector m_vDisableRuleNames; VARIANT_BOOL m_fw_profile2_domain_enabled = VARIANT_TRUE; VARIANT_BOOL m_fw_profile2_private_enabled = VARIANT_TRUE; VARIANT_BOOL m_fw_profile2_public_enabled = VARIANT_TRUE; bool m_bModifyFireWall = false; DWORD m_pid = 0; const int m_inprogressCheckSeconds = 60*5; bool m_bcheck = true; }; extern std::shared_ptr g_windowsFireWallPtr; #endif // CWINDOWSFIREWALL_H