簡體   English   中英

創建防火牆規則以在C#中以編程方式為每個應用程序打開端口

[英]Create firewall rule to open port per application programmatically in c#

我需要為我的應用程序打開特定的端口。

我嘗試對所有端口的每個應用程序使用INetFwAuthorizedApplication規則。

fwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app)

或者,使用INetFwOpenPort為所有應用程序打開一個端口。

firewallManager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port)

是否可以通過編程方式以編程方式為每個應用程序僅打開單個端口? 我可以通過防火牆設置手動進行操作。

存在一個問題,該問題的答案是使用C#創建防火牆規則的說明來阻止連接。 您應該能夠適應我想象的任何種類的防火牆規則。

https://stackoverflow.com/a/1243026/12744

以下代碼創建一個防火牆規則,該規則將阻止所有網絡適配器上的所有傳出連接:

 using NetFwTypeLib; // Located in FirewallAPI.dll ... INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance( Type.GetTypeFromProgID("HNetCfg.FWRule")); firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; firewallRule.Description = "Used to block all internet access."; firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; firewallRule.Enabled = true; firewallRule.InterfaceTypes = "All"; firewallRule.Name = "Block Internet"; INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance( Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); firewallPolicy.Rules.Add(firewallRule); 

您也可以只使用PowerShell。

using System.Management.Automation;
...
private void OpenPort(int port)
{
    var powershell = PowerShell.Create();
    var psCommand = $"New-NetFirewallRule -DisplayName \"<rule description>\" -Direction Inbound -LocalPort {port} -Protocol TCP -Action Allow";
    powershell.Commands.AddScript(psCommand);
    powershell.Invoke();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM