如何在所有C#中设置防火墙规则? 我尝试只设置域或私有域,但效果很好。但是对于所有代码,它都不起作用。 我使用来自GitHub的代码,此解决方案https://github.com/falahati/WindowsFirewallHelper
部分代码:
var rule = FirewallManager.Instance.CreateApplicationRule(FirewallManager.Instance.GetProfile(FirewallProfiles.All).Type, @"MyApp Rule", FirewallAction.Allow, @"C:\MyApp.exe");
rule.Direction = FirewallDirection.Inbound;
FirewallManager.Instance.Rules.Add(rule);
[Flags]
public enum FirewallProfiles
{
Domain = NET_FW_PROFILE_TYPE2.NET_FW_PROFILE2_DOMAIN,
Private = NET_FW_PROFILE_TYPE2.NET_FW_PROFILE2_PRIVATE,
Public = NET_FW_PROFILE_TYPE2.NET_FW_PROFILE2_PUBLIC,
All=NET_FW_PROFILE_TYPE2.NET_FW_PROFILE2_ALL
}
我抓到exception =FirewallLegacyNotSupportedException
答案 0 :(得分:0)
建议:尝试将其添加到您的app.config / web.config:
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>
特别是:
MSDN: Compatibility: Using the CAS Policy Legacy Option
通过配置元素,您可以 指定进程或库使用旧版CAS策略。当你 启用此元素,策略和证据超载将作为 他们在框架的早期版本中做了。
注意: CAS策略行为是基于运行时版本指定的,因此 修改一个运行时版本的CAS策略不会影响CAS 其他版本的政策。
建议:
建议#3:
请发回这两项信息是否对您有用。我正在用手指交叉;)!
答案 1 :(得分:0)
您无法获得所有配置文件的配置文件。具有高级安全性的Windows防火墙(Vista +)中没有All
配置文件。该库只是Windows防火墙COM API的包装,您需要具有有关基础系统的基本信息才能使用它。
其次,通过传递FirewallProfiles
并随后使用Type
属性来获取配置文件实质上等于将FirewallProfiles
直接传递给方法。
var rule = FirewallManager.Instance.CreateApplicationRule(
FirewallProfiles.Private | FirewallProfiles.Domain | FirewallProfiles.Public,
@"MyApp Rule",
FirewallAction.Allow,
@"C:\MyApp.exe"
);
rule.Direction = FirewallDirection.Inbound;
FirewallManager.Instance.Rules.Add(rule);
请通过Github问题跟踪器提出这样的问题。 https://github.com/falahati/WindowsFirewallHelper/issues