标签: windows-firewall-api

以编程方式使用Windows防火墙

我很难找到与Windows防火墙相关的任何内容(关于如何在C++中添加除列表,关闭端口或禁用某些应用程序的Internet访问的应用程序).我发现即使MS站点在Visual Basic中显示示例.

我在哪里可以找到C++的例子?

谢谢

c++ firewall windows-firewall-api

13
推荐指数
1
解决办法
2万
查看次数

为分布式事务处理协调器(msdtc.exe)添加防火墙规则

我试图用来firewallAPI.dll添加规则.它适用于calc.exe(或其他一些文件),如下所述,但因msdtc.exe以下异常而失败:

System.IO.FileNotFoundException:'系统找不到指定的文件.(HRESULT异常:0x80070002)'

例:

static void Main(string[] args)
{
    var manager = GetFirewallManager();
    if (manager.LocalPolicy.CurrentProfile.FirewallEnabled)
    {
        var path = @"C:\Windows\System32\calc.exe";
        //var path = @"C:\Windows\System32\msdtc.exe"; // System.IO.FileNotFoundException: 'The system cannot find the file specified.
        AuthorizeApplication("Test", path, NET_FW_SCOPE_.NET_FW_SCOPE_ALL, NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY);
    }
}

private const string CLSID_FIREWALL_MANAGER =
    "{304CE942-6E39-40D8-943A-B913C40C9CD4}";

private static NetFwTypeLib.INetFwMgr GetFirewallManager()
{
    Type objectType = Type.GetTypeFromCLSID(
        new Guid(CLSID_FIREWALL_MANAGER));
    return Activator.CreateInstance(objectType)
        as NetFwTypeLib.INetFwMgr;
}

private const string PROGID_AUTHORIZED_APPLICATION =
    "HNetCfg.FwAuthorizedApplication";
public static bool AuthorizeApplication(string title, string applicationPath,
    NET_FW_SCOPE_ scope, NET_FW_IP_VERSION_ …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-firewall windows-firewall-api

8
推荐指数
1
解决办法
370
查看次数

如何检测防火墙产品是否已启用?

如何启用防火墙产品,如何检测(从使用C#编写的Windows窗体应用程序)?

这是我的代码,我在INetFwMgr上遇到错误,无法找到类型或命名空间

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40D8-943A-B913C40C9CD4}"; 

       INetFwMgr manager = GetFireWallManager();
       bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled;



       private static INetFwMgr GetFireWallManager()
       {
           Type objectType = Type.GetTypeFromCLSID(new Guid(CLSID_FIREWALL_MANAGER));
           return Activator.CreateInstance(objectType) as INetFwMgr;
       }
        private void button1_Click(object sender, EventArgs e)
        {



            if (isFirewallEnabled == false)
           {
                MessageBox.Show("Firewall is not enabled.");
           }
           else
           {
                MessageBox.Show("Firewall is enabled.");
           }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# windows-firewall windows-firewall-api windows-applications

7
推荐指数
1
解决办法
5759
查看次数

禁用程序通过API向Windows防火墙添加例外的功能

这是Windows防火墙的一个问题,它的引入非常烦人.并坚持通过几个版本的Windows.

我有两个问题:

是否可以禁用或至少需要在XP/2003 Server中进行确认?

UAC是否在Vista/2008服务器中处理此问题?如果没有 - 有没有办法禁用它?

windows-firewall windows-firewall-api

5
推荐指数
1
解决办法
1650
查看次数

在C#中为Windows 7和Xp Sp3控制Windows防火墙

我在这里有一个完美的Windows 7代码,我从这篇文章中获得帮助....

在Win Xp Sp3 PC上编译相同代码时会出现问题.它不会导致...说界面丢失(错误)....

我似乎无法弄明白.我已经为windows xp再次添加了对hnetcfg.dll(COM APi参考)的引用(在Windows 7中我必须将nother dll" FirewallAPi.dll " 添加到项目中)

using NATUPNPLib;
using NETCONLib;
using NetFwTypeLib;
Run Code Online (Sandbox Code Playgroud)

但是VS仍然看不到接口和其他类

请原谅张贴整个代码

防火墙经理

using System;
using System.Collections;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using NATUPNPLib;
using NETCONLib;
using NetFwTypeLib;

namespace WindowsFirewallManager
{
/// Allows basic access to the windows firewall API.
/// This can be used to add an exception to the windows firewall
/// exceptions list
public class FirewallHelper
{
    #region Variables

    /// Hooray! …
Run Code Online (Sandbox Code Playgroud)

c# wpf windows-firewall-api windows-xp-sp3 windows-7-x64

5
推荐指数
1
解决办法
7063
查看次数

通过win7 FirewallAPI将应用程序防火墙规则添加到私有和公共网络

一点背景:Basicaly我想为私人和公共网络添加程序防火墙访问规则.

我曾经使用过这个 - "netsh firewall add allowedprogram program ="Path .."name = AppName ENABLE scope = ALL profile = CURRENT"

但是现在我想使用COM对象自动化一个进程.找到了这段闪亮的代码 - http://web.archive.org/web/20070707110141/http://www.dot.net.nz/Default.aspx?tabid=42&mid=404&ctl=Details&ItemID=8

在实现课程后,我一直在尝试使用FirewallHelper.Instance.GrantAuthorization(@"Path ...","AppName",NET_FW_SCOPE_.NET_FW_SCOPE_ALL,NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY);

我面临的问题是GrantAuthorization方法只会为公共OR专用网络添加规则,而我的旧netsh命令会为每个网络添加1个规则.

命令实际上看起来非常相似,所以它对我来说有点温和.

那么......如何添加两个网络规则?

肖恩

c# firewall windows-firewall windows-firewall-api firewall-access

5
推荐指数
3
解决办法
1万
查看次数

使用 C# 在 Windows 10 中设置端口防火墙例外

我正在尝试为 Windows 10 设置防火墙例外。经过多次搜索后,我整理了以下代码:

private const string PROGID_OPEN_PORT = "HNetCfg.FWOpenPort";
private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
private NetFwTypeLib.INetFwMgr GetFirewallManager()
{
    Type objectType = Type.GetTypeFromCLSID(
      new Guid(CLSID_FIREWALL_MANAGER));
    return Activator.CreateInstance(objectType)
      as NetFwTypeLib.INetFwMgr;
}

INetFwMgr manager = GetFirewallManager();

Type type = Type.GetTypeFromProgID(PROGID_OPEN_PORT);
INetFwOpenPort port = Activator.CreateInstance(type) as INetFwOpenPort;
port.Name = "MyPortRule";
port.Port = 9600;
port.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
port.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
port.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY;

manager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port);
Run Code Online (Sandbox Code Playgroud)

这确实将防火墙规则放入具有高级安全性的 Windows 防火墙中,但该规则的配置文件设置为公开。配置文件设置为公共防火墙不会让数据通过端口。

使用 Windows UI 修改规则,我确定必须将 Profile 设置为“private”或“any”,以便数据通过。为什么不将 port.Scope 设置为 NET_FW_SCOPE_.NET_FW_SCOPE_ALL 将配置文件设置为 Any?您如何将防火墙规则中的配置文件设置为私有或任何?

我还尝试将 port.Scope 设置为 NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET。配置文件仍设置为“公开”。

c# firewall windows-firewall windows-firewall-api

3
推荐指数
1
解决办法
3229
查看次数

使用 C# 打开和关闭防火墙

我编写了一个 C# 程序,它使用命令行参数来打开和关闭防火墙。

Process proc = new Process();
string top = "netsh.exe";
proc.StartInfo.Arguments = "**Advfirewall set allprofiles state on**";
proc.StartInfo.FileName = top;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
// MessageBox.Show("Disable");
button1.Text = "Set On";
status = false;
Run Code Online (Sandbox Code Playgroud)

我还以管理员权限运行该应用程序。该应用程序会自动以管理员权限运行,但不会将防火墙状态设置为打开或关闭。

当我在 cmd(netsh) 中运行相同的命令时,防火墙会打开或关闭。

有谁知道为什么这不起作用?

.net c# windows-firewall-api

0
推荐指数
1
解决办法
3171
查看次数