首页 > 系统相关 >Windows中通过C++自动添加防火墙例外规则

Windows中通过C++自动添加防火墙例外规则

时间:2023-08-24 18:13:10浏览次数:36  
标签:__ SUCCEEDED Windows pFwRule 防火墙 C++ hr put

在C++程序中无法直接控制防火墙警报窗口的显示,因为这是由操作系统和防火墙软件控制的。防火墙警报窗口是为了提醒用户程序正在尝试与外部网络进行通信,以确保用户意识到可能的网络活动。

然而,可以通过编写C++程序在用户的系统上自动添加防火墙例外规则,从而避免防火墙警报窗口的显示,以下是代码示例方法:

#include <iostream>
#include <Windows.h>
#include <netfw.h>

int add_firewall_whitelist()
{
    // 初始化COM库
    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
    if (SUCCEEDED(hr)) {
        // 创建INetFwPolicy2对象
        INetFwPolicy2* pFwPolicy = nullptr;
        hr = CoCreateInstance(__uuidof(NetFwPolicy2), nullptr, CLSCTX_INPROC_SERVER,
            __uuidof(INetFwPolicy2), reinterpret_cast<void**>(&pFwPolicy));
        if (SUCCEEDED(hr)) {
            // 创建规则对象
            INetFwRule* pFwRule = nullptr;
            hr = CoCreateInstance(__uuidof(NetFwRule), nullptr, CLSCTX_INPROC_SERVER,
                __uuidof(INetFwRule), reinterpret_cast<void**>(&pFwRule));
            if (SUCCEEDED(hr)) {
                // 配置规则属性
                BSTR ruleName = SysAllocString(L"MyAppRule");
                pFwRule->put_Name(ruleName);
                SysFreeString(ruleName);

                BSTR exePath = SysAllocString(L"C:\\Path\\To\\Your\\Program.exe"");// 替换为你的程序路径
                pFwRule->put_ApplicationName(exePath);
                pFwRule->put_Action(NET_FW_ACTION_ALLOW);
                pFwRule->put_Direction(NET_FW_RULE_DIR_IN);
                pFwRule->put_Enabled(VARIANT_TRUE);
                pFwRule->put_Profiles(NET_FW_PROFILE2_ALL);

                // 将规则添加到防火墙策略中
                INetFwRules* pFwRules = NULL;
                hr = pFwPolicy->get_Rules(&pFwRules);
                if (SUCCEEDED(hr)) {
                    hr = pFwRules->Add(pFwRule);
                    if (SUCCEEDED(hr)) {
                        std::cout << "Rule added successfully" << std::endl;
                    }
                    pFwRules->Release();
                }
                SysFreeString(exePath);
                pFwRule->Release();
            }

            pFwPolicy->Release();
        }
        // 释放COM库资源
        CoUninitialize();
    }
    return 0;  
}

  

标签:__,SUCCEEDED,Windows,pFwRule,防火墙,C++,hr,put
From: https://www.cnblogs.com/TechNomad/p/17654833.html

相关文章

  • Windows怎么录制屏幕
    使用Win键+Alt+R进行屏幕录制Wwin键是ctrl键和alt键之间的按键。windows键就是电脑键盘上ctrl键和alt键之间的按键。它带着微软的徽标,跟开始菜单一样的图标,它属于辅助按键,主要与其它按键组合使用,实现一些特定的功能,组合成多种快捷操作方式。录制会走时间停止录制使用Win+G......
  • windows cmd bat maven打包pause无法暂停问题
    解决:使用call来调用命令::当前目录setwork_path=%~dp0cd/d%work_path%callmvncleancallmvninstallechook...pause 执行结果:  ......
  • python 在windows下open打开文件默认编码
    open(self.data_path):python在用open打开文件时,如果默认不指定编码encoding="UTF-8"则会用windows默认的编码,一般为GBK,有的开源代码并未指定编码,但是UTF8的文件,全局修改一下,设置windows环境变量:PYTHONUTF8=1,参考:https://dev.to/methane/python-use-utf-8-mode-on-windows-212i......
  • windows 桌面GUI自动化- 14.pywinauto 找到多个相同控件使用found_index
    前言pywinauto在查找到多个相同控件时操作会报错,可以使用found_index选择其中的一个查找到多个查找control_type="MenuBar"的所有控件frompywinautoimportApplicationapp=Application('uia').start("notepad.exe")win=app.window(title_re="无标题-记事本")#......
  • Windows安装Python
    官网地址一、安装进入官网后,点击Downloads下的Windows 然后选择合适自己的版本,这里以Python3.11.4为例,下载Windowsinstall(64-bit)的下载器 然后勾选AddPython.exetoPATH 然后点击Customizeinstallation 点击Next 更改一下安装的路径,默认的也行 然......
  • windows 桌面GUI自动化- 12.pywinauto 组合框控件ComboBox操作
    前言pywinauto组合框控件ComboBox操作场景记事本-另存为-编码选择,下图这种就是组合框控件ComboBoxselect选择官网给的教程是通过select选择选项示例frompywinautoimportApplicationapp=Application('uia').start("notepad.exe")win=app.window(title_re="......
  • 防火墙常用命令(Centos)
    开放端口firewall-cmd--zone=public--add-port=80/tcp--permanent#开放80端口systemctlrestartfirewalls.service#重启防火墙查看已开启的端口firewall-cmd--list-ports启动与停止firewall-cmd--state#查看防火墙状态systemctlstopfirewalls.service......
  • windows 桌面GUI自动化- 11.pywinauto 窗口和控件截图capture_as_image()
    前言pywinauto对窗口和控件截图capture_as_image()窗口截图对连接的窗口截图frompywinautoimportApplicationapp=Application('uia').start("notepad.exe")win=app.window(title_re="无标题-记事本")#对窗口截图win.capture_as_image().save('not.pn......
  • Windows休眠后光标移动卡顿
    问题环境:-OS:Windows11-CPU:AMDRyzen7PRO6850U背景知识:-睡眠:操作系统状态驻留内存,能够快速唤醒-休眠:操作系统状态卸载到磁盘中,唤醒时需要重载状态至内存我的笔记本电脑在连接电源时会出现睡眠睡死的情况,所以长时间不用会主动休眠,避免睡死,但是发现在休眠唤醒后长按......
  • C++构造函数、析构函数、初始化列表
    构造函数构造函数就是与类名同名的成员函数,当实例化对象时它会自动执行,当构造函数执行结束后,对象才完成实例化任务:一般负责对类对象进行初始化、资源分配class类名{int*p;public:类名(参数){p=newint;}}......