【问题标题】:Adding firewall rule not adding for domain network添加防火墙规则不为域网络添加
【发布时间】:2014-01-14 00:20:35
【问题描述】:

我正在尝试在防火墙中添加应用程序。它工作正常,但它只检查“公共”选项。我想为“域”添加防火墙规则。

这是我的代码。

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

private INetFwMgr _firewallManager;
private INetFwMgr FirewallMgr
{
    get { return _firewallManager ?? (_firewallManager = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(ClsidFirewallManager)))); }
}

private INetFwPolicy FirewallPolicy
{
    get { return FirewallMgr.LocalPolicy; }
}

private INetFwProfile _firewallProfile;
private INetFwProfile FirewallProfile
{
    get { return _firewallProfile ?? (_firewallProfile = FirewallPolicy.CurrentProfile); }
}


public void AddApplication(string imageFileName, string registerName)
{
    if (!IsAppEnabled(imageFileName))
    {
        var firewallApplicatoins = FirewallProfile.AuthorizedApplications;
        var type = Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication");
        var firewallApplication = Activator.CreateInstance(type) as INetFwAuthorizedApplication;

            firewallApplication.ProcessImageFileName = imageFileName;
            firewallApplication.Name = registerName;
            firewallApplication.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET; ---> Here it adds to public, whatever the value for enum is.
            firewallApplication.Enabled = true;

            firewallApplicatoins.Add(firewallApplication);
    }
}

我已经点击了这个链接。

http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/10c6ff4b-701b-4351-a3d8-a716d8831a66/add-c-application-to-firewall-exception-list-of-windows-7?forum=windowssecurity&prof=required

现在,无论我为 Scope 分配什么值,都只为公共网络添加防火墙规则。我想为域网络添加它。

firewallApplication.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET;

我在这里做错了什么。我使用的是 Windows 8。

【问题讨论】:

    标签: c# firewall windows-firewall windows-firewall-api


    【解决方案1】:

    我遇到了问题。我现有的代码仅适用于 Windows XP。对于 Vista 或更高版本,它无法正常工作。对于 Vista,我需要使用下一版本的防火墙。

    这里是代码。

    var firewallRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
    
    firewallRule.Name = registerName;
    firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
    firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
    firewallRule.Enabled = true;
    firewallRule.InterfaceTypes = "All";
    
    var rules = VistaFirewallPolicy.Rules;
    rules.Add(firewallRule);
    

    此代码将向域、私有和公共域添加防火墙规则。

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2018-08-05
      相关资源
      最近更新 更多