[英]c# Firewall rule multi profile
如何在 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
您無法獲得所有配置文件的配置文件。 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
建議:嘗試將其添加到您的 app.config/web.config:
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>
具體來說:
配置元素允許您指定進程或庫使用舊 CAS 策略。 當您啟用此元素時,策略和證據重載將像它們在框架的先前版本中那樣工作。
注意:CAS 策略行為是基於運行時版本指定的,因此修改一個運行時版本的 CAS 策略不會影響另一個版本的 CAS 策略。
替代建議:
建議#3:
看看這個 C# 示例。
請發回這些是否適合您。 我在交叉我的手指;)!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.