c# 防火墻添加/刪除 特定端口的示例
針對(duì)將特定端口加入到windows系統(tǒng)的防火墻中,使其允許或禁止通過防火墻。其大概思路是:
/// <summary> /// 添加防火墻例外端口 /// </summary> /// <param name="name">名稱</param> /// <param name="port">端口</param> /// <param name="protocol">協(xié)議(TCP、UDP)</param> /// <param name="scope">范圍類型</param> /// <param name="remoteAddresses">自定義范圍時(shí)的IP地址范圍</param> public static void AllowPortsUseFirewall(string name, int port, string protocol, NET_FW_SCOPE_ scope,string remoteAddresses) { //創(chuàng)建firewall管理類的實(shí)例: Type的GetTypeFromProgID是通過注冊(cè)表信息項(xiàng)目創(chuàng)建實(shí)例類型 INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr")); //判斷網(wǎng)絡(luò)類型,是TCP還是UDP NET_FW_IP_PROTOCOL_ protocolType = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP; if (protocol.ToUpper() == "TCP") { protocolType = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP; } //查找以前是否有相同的規(guī)則創(chuàng)建,如果有則不再創(chuàng)建新的規(guī)則 foreach (INetFwOpenPort mPort in netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts) { if (mPort.Protocol == protocolType && mPort.Port == port) { return; } } //創(chuàng)建一個(gè)防火墻端口管理實(shí)例 INetFwOpenPort objPort = (INetFwOpenPort)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwOpenPort")); //設(shè)置端口實(shí)例名稱 objPort.Name = name; //設(shè)置端口信息 objPort.Port = port; //端口管理的網(wǎng)絡(luò)類型 objPort.Protocol = protocolType; /* * NET_FW_SCOPE_ALL 范圍是所有地址。 * NET_FW_SCOPE_CUSTOM 自定義范圍。 * NET_FW_SCOPE_LOCAL_SUBNET 范圍是本地子網(wǎng)。 * NET_FW_SCOPE_MAX 使用僅用于測(cè)試。不意味著為應(yīng)用程序?qū)崿F(xiàn)。 */ //端口的范圍,針對(duì)哪類或哪個(gè)IP地址 objPort.Scope = scope; //此處可以指定IP地址版本信息 //objPort.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V4; //自定義IP地址范圍 if (objPort.Scope == NET_FW_SCOPE_.NET_FW_SCOPE_CUSTOM) { //這而需要移除多個(gè)地址之間的空白字符串,有空白字符串會(huì)出現(xiàn)設(shè)置異常 objPort.RemoteAddresses = remoteAddresses.Replace(" ", ""); ;//"192.168.1.10,192.168.1.12......."; } //是否啟用規(guī)則 objPort.Enabled = true; //加入到本地防火墻管理規(guī)則中。 netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort); }
刪除規(guī)則比較簡(jiǎn)單:創(chuàng)建防火墻實(shí)例,直接移除某種通信類型的端口就行。
/// <summary> /// 刪除防火墻例外端口 /// </summary> /// <param name="port">端口</param> /// <param name="protocol">協(xié)議(TCP、UDP)</param> public static void DeletePortsUseFirewall(int port, string protocol) { //創(chuàng)建firewall管理類的實(shí)例: Type的GetTypeFromProgID是通過注冊(cè)表信息項(xiàng)目創(chuàng)建實(shí)例類型 INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr")); //移除特定類型的通信方式的端口 if (protocol == "TCP") { netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP); } else { netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP); } }
以上就是c# 防火墻添加/刪除特定端口的示例的詳細(xì)內(nèi)容,更多關(guān)于c# 防火墻添加/刪除端口的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C#檢測(cè)遠(yuǎn)程計(jì)算機(jī)端口是否打開的方法
- C#端口轉(zhuǎn)發(fā)用法詳解
- 基于C#實(shí)現(xiàn)的端口掃描器實(shí)例代碼
- c#檢測(cè)端口是否被占用的簡(jiǎn)單實(shí)例
- C#獲取Windows進(jìn)程監(jiān)聽的TCP/UDP端口實(shí)例
- C#開發(fā)之Socket網(wǎng)絡(luò)編程TCP/IP層次模型、端口及報(bào)文等探討
- asp.net(c#)動(dòng)態(tài)修改webservice的地址和端口(動(dòng)態(tài)修改配置文件)
- c# 連接字符串?dāng)?shù)據(jù)庫服務(wù)器端口號(hào) .net狀態(tài)服務(wù)器端口號(hào)
- c# AcceptEx與完成端口(IOCP)結(jié)合的示例
相關(guān)文章
快速學(xué)習(xí)C# 設(shè)計(jì)模式之職責(zé)鏈模式
這篇文章主要介紹了C# 設(shè)計(jì)模式之職責(zé)鏈模式的的相關(guān)資料,文中代碼非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06詳解Unity 實(shí)現(xiàn)語音識(shí)別功能
語言識(shí)別功能已經(jīng)在我們身邊普遍流行起來,在unity開發(fā)中語音識(shí)別也非?;馃?,今天就介紹下Unity自帶的語音識(shí)別功能的實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧2021-05-05舊項(xiàng)目升級(jí)新版Unity2021導(dǎo)致Visual?Studio無法使用的問題
在項(xiàng)目開發(fā)過程中,不可避免的會(huì)升級(jí)開發(fā)工具。這次我在舊項(xiàng)目版本升級(jí)到新版Unity2021.2.x時(shí),出現(xiàn)Visual?Studio無法定位等問題,這里我給大家分享下解決方法,舊項(xiàng)目升級(jí)新版Unity2021導(dǎo)致Visual?Studio無法使用的問題,需要的朋友可以參考下2021-12-12C#使用Consul集群進(jìn)行服務(wù)注冊(cè)與發(fā)現(xiàn)
這篇文章主要介紹了C#使用Consul集群進(jìn)行服務(wù)注冊(cè)與發(fā)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12