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