C# 防火墻操作之特定程序
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
/// <summary> /// 允許應(yīng)用程序通過防火墻 /// </summary> /// <param name="appPath">應(yīng)用程序的絕對路徑</param> /// <exception cref="FileNotFoundException">未找到程序文件</exception> public static void AllowAppUseFirewall(string appPath) { if(System.IO.File.Exists(appPath)==false) { throw new System.IO.FileNotFoundException("未找到程序文件"); } //創(chuàng)建firewall管理類的實(shí)例: Type的GetTypeFromProgID是通過注冊表信息項(xiàng)目創(chuàng)建實(shí)例類型 INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr")); //以程序名為規(guī)則名創(chuàng)建規(guī)則,以便查詢 string name = System.IO.Path.GetFileNameWithoutExtension(appPath); NET_FW_PROFILE_TYPE_ currentProfileType = netFwMgr.CurrentProfileType; //查找防火墻規(guī)則中是否已有同名規(guī)則存在 foreach (INetFwAuthorizedApplication item in netFwMgr.LocalPolicy.GetProfileByType(currentProfileType).AuthorizedApplications) { if (item.Name == name) { return; } } //創(chuàng)建一個(gè)認(rèn)證程序類的實(shí)例 INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication")); //在例外列表里,程序顯示的名稱 app.Name = name; //程序的絕對路徑,這里使用程序本身 app.ProcessImageFileName = appPath; //端口的范圍,針對哪類或哪個(gè)IP地址 //objPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL; //此處可以指定IP地址版本信息 //objPort.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V4; //是否啟用該規(guī)則 app.Enabled = true; //加入到防火墻的管理策略 netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app); } /// <summary> /// 移除應(yīng)用程序通過防火墻 /// </summary> 該文章在 2021/3/24 23:09:14 編輯過
|
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |