2011-12-13 81 views
5

我需要打開我的應用程序的特定端口。創建防火牆規則以編程方式在C#中打開每個應用程序的端口

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

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

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

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

有什麼辦法,以編程方式打開每個應用程序只有一個端口? 我可以通過防火牆設置手動完成。

+1

我希望這是不可能的,否則我的投資一個安全軟件是浪費金錢。你是否100%確定你甚至需要打開這個端口,大多數應用程序甚至不需要這個,儘管它們提供瞭如何向用戶提供的說明。 「如果可能的話,我不需要打開UDP」,那麼你的意思是什麼?聲明沒有任何意義。 –

+0

而不是打開太多,我試圖限制更多。通過將我的應用程序添加到AuthorizedApplications應用程序,可以在所有本地和遠程端口上收聽/通信。我真的需要打開我的應用程序只有一個單一的端口。當您手動創建防火牆規則時,您只能指定應用程序和特定端口。 UDP與TCP並不那麼重要,它只意味着我不必在防火牆上有兩條入站規則。我會將其從我的問題中刪除,因爲這是第二個問題。 – Marek

回答

5

有一個關於在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); 
+0

這就是我正在尋找「INetFwRule」。謝謝 – Marek

相關問題