首页 > 系统相关 >windows系统防火墙应用程序出入站实现添加

windows系统防火墙应用程序出入站实现添加

时间:2024-09-25 09:48:24浏览次数:8  
标签:Direction firewallRuleIn FW windows firewallRuleOut 防火墙 应用程序 NET

使用com 组件:

 具体实现如下:

 

using System;
using NetFwTypeLib;

namespace FireWall
{
    public static class FireWallHelper
    {
        /// <summary>
        /// 将应用程序添加到防火墙例外
        /// </summary>
        /// <param name="ruleName">应用程序名称</param>
        /// <param name="applicationPath">应用程序可执行文件全路径</param>
        public static void NetFwAddApps(string ruleName, string applicationPath)
        {
            // 创建一个COM对象来访问Windows防火墙设置
            var type = Type.GetTypeFromProgID("HNetCfg.FwPolicy2");
            var firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(type);

            // 创建一个防火墙出站规则对象
            var firewallRuleOut = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));

            // 设置防火墙规则的属性
            firewallRuleOut.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
            firewallRuleOut.Description = "Allow outbound traffic for My Application";
            firewallRuleOut.ApplicationName = applicationPath;
            firewallRuleOut.Name = ruleName;
            firewallRuleOut.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_ANY;
            firewallRuleOut.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
            firewallRuleOut.Enabled = true;

            // 创建一个防火墙入站规则对象
            var firewallRuleIn = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));

            // 设置防火墙规则的属性
            firewallRuleIn.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
            firewallRuleIn.Description = "Allow outbound traffic for My Application";
            firewallRuleIn.ApplicationName = applicationPath;
            firewallRuleIn.Name = ruleName;
            firewallRuleIn.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_ANY;
            firewallRuleIn.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
            firewallRuleIn.Enabled = true;

            var isExistsRuleOut = false;
            var isExistsRuleIn = false;
            // 遍历规则集合,检查规则名称是否存在
            foreach (INetFwRule rule in firewallPolicy.Rules)
            {
                if (rule.Name == ruleName)
                {
                    if (rule.Direction == firewallRuleOut.Direction)
                    {
                        isExistsRuleOut = true;
                    }

                    if (rule.Direction == firewallRuleIn.Direction)
                    {
                        isExistsRuleIn = true;
                    }
                }
            }

            if (!isExistsRuleOut)
            {
                // 将出站规则添加到防火墙策略中
                firewallPolicy.Rules.Add(firewallRuleOut);
            }

            if (!isExistsRuleIn)
            {
                // 将出站规则添加到防火墙策略中
                firewallPolicy.Rules.Add(firewallRuleIn);
            }
        }
    }
}

 

标签:Direction,firewallRuleIn,FW,windows,firewallRuleOut,防火墙,应用程序,NET
From: https://www.cnblogs.com/terryK/p/18430650

相关文章

  • Windows 10 on ARM, version 22H2 (updated Sep 2024) ARM64 AArch64 中文版、英文版
    Windows10onARM,version22H2(updatedSep2024)ARM64AArch64中文版、英文版下载基于ARM的Windows10请访问原文链接:https://sysin.org/blog/windows-10-arm/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindows10,version22H2(releasedNov2021)......
  • 在 Windows 机器内使用 Fast API、React、Raspberry Pi 制作服务器应用程序
    系统规格处理器-i5第13代RAM-16GBSSD-Nvme500GB操作系统-WindowsHomeRaspberryPi-Pi48GB我有一个托管的FastAPI应用程序在Windows机器上,同一台机器上还有一个React应用程序。React应用程序使用fastAPI应用......
  • 随时关闭与开启Windows更新功能
    亲测有效,随时可以开启、关闭Windows更新的方法Win10成功关闭时的状态:Win11成功关闭时的状态: 主要方法及原理是通过修改注册表使Windows更新相关的服务配置关闭和出错,从而导致Windows系统后台启动更新服务失败。具体步骤如下:一、运行regedit打开系统注册表,分别找到下面四......
  • nginx - - - Windows 使用手册
    1.安装nginx官网:https://nginx.org/nginx下载页面:https://nginx.org/en/download.html下载稳定版压缩包解压,就安装完成了。下载地址:https://nginx.org/download/nginx-1.26.2.zip解压:2.修改配置文件修改nginx.conf文件。3.运行打开nginx.exe安装目录,在资源管理器......
  • Windows vnc viewer 连接 ubuntu 22.04 远程图形桌面
    前言全局说明一、说明环境:Windows11家庭版23H222631.3737Python3.8.10(tags/v3.8.10:3d8993a,May32021,11:48:03)[MSCv.192864bit(AMD64)]onwin32Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC......
  • Windows 11 显示字体不清晰解决办法
    在一台AIO520-22的显示器上,100%,125%都感觉字体与图标不清晰。第一步,先将显示器设置硬件推荐分辨率,显示器硬件说明书或外包装上有,或使用系统中设置分辨率的中推荐那一项。第二步,查看PPI是多少,这一步关键得知道硬件尺寸。屏幕像素密度(PPI)查询第三步,计算出你的显示器适合的放大比......
  • 项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持
    需求  1.使用osg三维引擎进行动力学模型仿真性能测试;  2.打开动力学仿真模型文件,.k后缀的模型文件,测试加载解析过程;  3.解决第三方company的opengl制作的三维引擎,绘制面较多与弹丸路径模拟较卡顿的问题;  4.测试时,使用的模型为公开模型,基础面数量达到160多万个;  5.测......
  • 在windows上使用docker创建mysql数据库
    可以以下步骤在Windows上使用Docker创建MySQL数据库:安装Docker:确保Windows上已安装DockerDesktop。拉取MySQL镜像:打开终端,运行以下命令:dockerpullmysql启动MySQL容器:使用以下命令启动一个MySQL容器(替换your_password为你的密码):dockerrun--namemysql-container......
  • 在Windows上使用Docker创建Redis
    在Windows上使用Docker创建Redis并设置密码拉取Redis镜像通过终端执行以下命令来获取Redis的官方镜像:dockerpullredis启动Redis容器并设置密码使用--requirepass选项来设置Redis密码。例如,启动Redis并将密码设置为your_password:dockerrun--nameredis-container-d......
  • windows rb_tree动画
    #defineUNICODE#include<windows.h>#include<windowsx.h>#include<stdbool.h>#include<stdio.h>typedefstructball_tball_t;structball_t{intsrc_x;intsrc_y;inttarget_x;inttarget_y;};constintWI......