-
2022-02-22 11:22:15
前言
由于疫情的持续肆虐,出行成了大问题。为了尽量减少风险,外地的办公室是能不过去就不过去。一般问题远程就解决了,但碰到系统因故障需重装的情况就比较麻烦,外地的同事并不是IT专业的,在电话指导+Word文档指引下安装完系统,后续仍有一些重复的操作如开启远程桌面、设置默认账号密码及变更防火墙设置(以放开远程桌面连接)等,虽亦可以写份Word文档说明操作步骤,但总感觉这些操作可以通过程序来实现,同时考虑到在远程桌面开通后,仍有一些标准的安全设置需要重复设置,遂用C#写了两个小工具来自动化这些操作。其中主要用到以下这些功能,分享一下。
在此前,我们已通过另一个Console小工具配合Powershell脚本开通了远程桌面,接下来我们可以通过C#来进行防火墙的基本设置。主要通过WindowsFirewallHelper(参考https://github.com/falahati/WindowsFirewallHelper)来操作Windows防火墙。
/// <summary> /// 建立自定义程序规则 /// </summary> /// <param name="newAppRuleName ">规则名称</param> /// <param name="appExeFileName">程序可执行文件完整路径及名称</param> private void CreateApplicationRule(string newAppRuleName, string appExeFileName) { var rule = FirewallManager.Instance.Rules.Where(r => r.Direction == FirewallDirection.Outbound && //搜索出站规则 r.Name.Equals(newAppRuleName) ).FirstOrDefault(); if (rule == null) // 指定的规则不存在 { try { rule = FirewallManager.Instance.CreateApplicationRule( FirewallProfiles.Domain | FirewallProfiles.Private | FirewallProfiles.Public, // 生效的配置文件 newAppRuleName, FirewallAction.Block, // 阻止 appExeFileName, FirewallProtocol.TCP //协议 ); rule.Direction = FirewallDirection.Outbound; //方向:出站 FirewallManager.Instance.Rules.Add(rule); // todo: 输出成功建立规则信息 } catch (Exception ex) { // todo: 输出错误信息 } } else { // todo: 输出规则已存在信息 } } /// <summary> /// 建立自定义端口规则 /// </summary> /// <param name="newPortRuleName">规则名称</param> /// <param name="portNumber">端口:例如3389</param> /// <param name="firewallAction">动作:FirewallAction.Allow 或 FirewallAction.Block</param> /// <param name="firewallDirection">方向:FirewallDirection.Inbound 或 FirewallDirection.Outbound</param> private void CreatePortRule(string newPortRuleName, ushort portNumber, FirewallAction firewallAction, FirewallDirection firewallDirection) { //搜索规则 var rule = FirewallManager.Instance.Rules.Where(r => r.Direction == firewallDirection && r.Name.Equals(newPortRuleName) ).FirstOrDefault(); if (rule == null) // 指定的规则不存在 { try { rule = FirewallManager.Instance.CreatePortRule( FirewallProfiles.Domain | FirewallProfiles.Private | FirewallProfiles.Public, // 生效的配置文件 newPortRuleName, firewallAction, // 运作:允许或阻止 portNumber, FirewallProtocol.TCP //协议 ); rule.Direction = firewallDirection; //方向 FirewallManager.Instance.Rules.Add(rule); // todo: 输出成功建立规则信息 } catch (Exception ex) { // todo: 输出错误信息 } } else { // todo: 输出规则已存在信息 } } // 定义允许的IP地址列表 private IAddress[] TargetIPAddress = new IAddress[] { SingleIP.Parse("192.168.11.248"), SingleIP.Parse("192.168.10.248") }; /// <summary> /// 更新自定义规则 /// </summary> /// <param name="targetRuleName">规则名称</param> /// <param name="firewallDirection">入站或出站规则</param> /// <param name="allowedIPAddress">允许的IP地址</param> private void UpdateRule(string targetRuleName, FirewallDirection firewallDirection, IAddress[] allowedIPAddress) { // 搜索目标规则 var rule = FirewallManager.Instance.Rules.Where(r => r.Direction == firewallDirection && r.Name.Equals(targetRuleName) ).FirstOrDefault(); if (rule != null) { try { rule.RemoteAddresses = allowedIPAddress; // todo: 输出成功更新信息 } catch (Exception ex) { // todo: 输出出错信息 } } else { // todo: 输出规则不存在信息 } } /// <summary> /// 删除(入站或出站)规则 /// https://github.com/falahati/WindowsFirewallHelper 使用的是 SingleOrDefault /// 但是,如碰巧有两条同名规则时会报提示:Sequence Contains More Than One Matching Element /// </summary> /// <param name="targetRuleName">规则名称</param> private void RemoveRule(string targetRuleName) { var rule2Remove = FirewallManager.Instance.Rules.FirstOrDefault (r => r.Name == targetRuleName); if (rule2Remove!= null) { try { FirewallManager.Instance.Rules.Remove(rule2Remove); // todo: 输出成功删除信息 } catch (Exception ex) { // todo: 输出出错信息 } } else { // todo: 输出规则不存在信息 } } /* * 禁用或启用规则 * WindowsFirewallHelper并没有提供禁用或启用规则的方法(或许是没有找到?),只能通过迂回的方式(运行advfirewall firewall set 命令)以达到目的。 */ /// <summary> /// 修改规则 /// </summary> /// <param name="targetRuleName">规则名称</param> /// <param name="actionFlag">bool: True or False</param> private void ModifyRule(string targetRuleName, bool actionFlag) { string cmd = "/C netsh advfirewall firewall set rule name=\"" + targetRuleName + "\" new enable=" + (actionFlag ? "yes" : "no"); RunCMD(cmd); } /// <summary> /// 运行命令行程序 /// </summary> /// <param name="argument">命令行参数</param> private static void RunCMD(string argument) { Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.WindowStyle = ProcessWindowStyle.Hidden; // 隐藏运行时窗口 startInfo.FileName = @"C:\Windows\System32\cmd.exe"; startInfo.Arguments = argument; process.StartInfo = startInfo; process.Start(); }
更多相关内容 -
Windows防火墙导入策略时提示拒绝访问,错误代码5,不知是什么原因,怎么能够正常把防火墙策略导入?
2020-03-27 07:29:41我的是Windows企业版系统,电脑是dellG3 3590。我已经尝试过百度搜索,用过的方法:1、启用了系统内置的超级管理员,进入了系统内置的超级管理员账户,也还是报同样的错误,2、注册表中修改这三个目录的权限,全部... -
windows防火墙不能启动错误5
2021-07-30 00:46:51Windows防火墙不能启动错误5的解决方法:1、原因是 NT Service/MpsSvc 帐户不具备相关注册表项的权限,则会发生此情况。下面我们获取相关注册表权限,在开始菜单输入regedit,进入注册表:找到下面三项,全部赋...有的用户因为之前的原因关闭了防火墙,又因为某些原因需要打开防火墙,却提示防火墙不能启动,错误代码5。下面让学习啦小编为大家整理一些关于这个问题的解决答案,希望能帮到大家。
Windows防火墙不能启动错误5的解决方法:
1、原因是 NT Service/MpsSvc 帐户不具备相关注册表项的权限,则会发生此情况。
下面我们获取相关注册表权限,在开始菜单输入regedit,进入注册表:
找到下面三项,全部赋予NT Service/MpsSvc 帐户完全控制权限:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy
如果没有NT Service/MpsSvc 帐户这个账户,则右键---权限---添加NT Service/MpsSvc 帐户,然后在到服务中,启用Windows Firewall服务。
这样防火墙就可以开启了
-
高级安全Windows防火墙管理单元无法加载。请重新启动正在管理的计算机上的Windows防火墙服务,报错代码:0x...
2021-11-24 16:57:30错误代码表示防火墙服务被禁用了。 当你再次发生上述错误的时候,我建议跟着下面的步骤检查: 1开始 >运行 >输入 services.msc 检查防火墙服务服务状态是否为启动 启动类型是否配置为自动 2 开始 >...错误代码表示防火墙服务被禁用了。
当你再次发生上述错误的时候,我建议跟着下面的步骤检查:
1开始 >运行 >输入 services.msc 检查防火墙服务服务状态是否为启动 启动类型是否配置为自动
2 开始 >运行>输入 msconfig 检查下图中windows firewall是否有勾选。
如果上述两项操作都正常,还是出现问题。
请问你是否在服务器上安装了三方的软件?
这里有有一个与你情况相似的主题,你可以参考
-
windows防火墙启动不了,错误代码13
2020-03-31 16:51:16或者 尝试联系WindowsDefender防火墙服务时发生错误。请确保该服务正在运行,然后重试你的请求。 解决://www.digisaster.com/?p=268 开始运行 regedit 计算机 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\...或者
尝试联系WindowsDefender防火墙服务时发生错误。请确保该服务正在运行,然后重试你的请求。
解决://www.digisaster.com/?p=268
开始运行 regedit
计算机
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters
删除注册表FirewallPolicy下面的所有项,但是不删除FirewallPolicy这个,
然后,命令行(admin)中输入:netsh advfirewall set allprofiles state on之后重启载打开防火墙界面点击使用推荐设置即可打开防火墙
-
解决windows防火墙无法更改某些设置 错误代码0X800
2017-01-10 12:16:25一、准备更改防火墙设置时,出现windows防火墙无法更改某些设置,错误代码0x80070422。 二、运行输入services.msc。 三、打开服务列表,找到“windows firewall”服务项。 四、右键属性,启动类型改... -
Windows Defender防火墙无法更改某些设置,错误代码0x80070422
2020-05-13 16:57:57事情是这样的,本人不小心手欠按到了破解器上面的“一键禁止Windows defenders”的按钮,导致我的防火墙整个被禁止掉了,进“服务”页面里面也无法开启。 具体的表现有如下: Windows Defender防火墙未使用推荐的... -
自动诊断并修复windows防火墙服务问题工具
2021-08-14 06:55:34自动诊断并修复windows防火墙服务问题工具是一款可以修复如Windows无法启动Windows防火墙服务0x5、缺少BFE服务或Windows远程协助没有运行等问题的工具,操作简单,非常好用。。相关软件软件大小版本说明下载地址自动... -
Windows无法启动本地计算机上的Windows防火墙 | MOS86
2021-07-26 08:48:11单击此处可以修复Windows错误并提高系统性能您可能会发现此问题,当您尝试打开Windows防火墙时,会说服务未运行。然后,当您尝试启动Windows防火墙服务时,您将收到此错误消息Windows无法启动本地计算机上的Windows... -
win7系统打开高级安全windows防火墙管理单元提示0×6D9怎么办
2021-07-10 01:32:11大家都知道防火墙的重要性,最近有用户遇反馈打开高级安全windows防火墙管理单元时出错,提示高级防火墙无法加载,请重新启动正在管理的计算机上的windows防火墙服务,错误代码0×6D9,怎么回事呢?出现打开高级安全... -
windows 7 防火墙无法开启!错误代码5 错误代码0x6D9 解决办法
2013-04-29 19:31:44之前不知道什么原因关闭了win7防火墙,然后一直没启用,今天手机要更新点软件...有人说在服务中,启用Windows Firewall服务,但我服务中启动Windows Firewall服务提示 特定服务错误代码5, 然后进入防火墙中的高级设... -
win10打开防火墙出现: windows防火墙无法更改某些设置,错误代码0x80070422
2016-11-10 12:34:26window防火墙无法更改某些设置,错误代码是0x80070422的解决方法: 1.键盘上按win+r(其中win一半为键盘上的微软符号)打开运行窗口,输入services.msc; 2.在打开的服务窗口中找到Window Firewall的服务,双击... -
Windows 从命令行启用/禁用防火墙
2021-12-21 13:12:38可以使用netsh命令从命令行启用/禁用 Windows 防火墙。 Windows 10 / Windows 8/ Windows 7 / Server 2008 /Vista: 让我们看看netsh advfirewall在这些 Windows 版本上配置防火墙的语法。3 个网络(域、专用、... -
windows 2008系统防火墙无法启动提示 错误1068:依赖服务或组无法启动
2020-07-29 16:25:45windows 2008系统防火墙无法启动提示 错误1068:依赖服务或组无法启动‘’ 首先通过系统日志发现是 BFE服务无法启动 然后把BFE服务启动后,再启动windows防火墙就可以起来了 -
windows防火墙无法启动,防火墙启动不了
2021-07-25 06:49:41win10系统防火墙无法启动怎么办?很多win7系统升级的win10系统的用户都会遇见防火墙无法正常启动的问题,因为win7系统的更新的防火墙我们一般是不怎么使用的,所有都会将其关闭。升级到win10系统之后防火墙也是在... -
Windows7打开防火墙出错提示0x6D9的原因及解决方法
2021-07-30 07:02:52Windows防火墙是系统配置的防毒功能,Win7系统下开启防火墙可以有效地防止病毒入侵,但有用户反映Win7系统下开启防火墙的时候提示“打开高级安全Windows防火墙管理单元时出错,错误代码0x6D9。”这是怎么回事?Win7... -
启用IPsec与Windows防火墙审核事件
2008-11-21 16:36:31启用IPsec与Windows防火墙审核事件 -
我如何配置python/flask公开访问与Windows防火墙
2020-12-16 02:18:42我如何配置python/flask公开访问与Windows防火墙这一切都在WINDOWS -一切工作正常,我们已经在公司内部没有问题测试,现在我们正在尝试使用的应用程序在现实世界中 - 我们已经得到了我们的IT部门给我们一个面向公众... -
windows7无法启动防火墙 错误代码0x80070422 的解决方法!
2017-07-22 11:41:03在windows 7操作系统中,有用户反应无法打开系统防火墙的情况,提示:Windows防火墙无法更改某些设置 错误代码0x80070422 的情况该怎么办呢?出现该错误代码是由于防火墙相应关联服务未开启导致的,下面小编给... -
windows 服务器版本2012R2防火墙问题
2021-08-07 11:53:32此外,防火墙服务关闭后,其他计算机是否可以ping通这台服务器?如果可以ping通的话,我们可以通过抓包来分析。请注意,在每次捕获netmon之前清除DNS缓存。如何清除缓存:打开DNS控制台,右键单击服务器,然后单击... -
Windows10电脑出现防火墙打不开了怎么办
2021-06-10 11:50:00有Windows10的用户在自己的电脑系统中出现防火墙无法正常打开的问题,感觉自己的电脑会处于危险的状态,那么遇到这个情况该如何解决和打开防火墙呢?下面深度技术系统小编就把具体的解决方法分享给大家。 修复... -
解决win7中防火墙的0x6D9问题的方法
2017-10-16 14:23:00问题: 打开windows防火墙管理单元时出错:代码0x6d9” 解决方法: 下一步-->下一步-->完成。 转载于:https://www.cnblogs.com/zouke1220/p/7676806.html... -
win7系统提示防火墙无法更改某些设置错误代码0x8007437的原因及四种解决方法
2021-07-05 10:44:27win7系统提示“防火墙无法更改某些设置,错误代码0x8007437”,这该怎么办呢?下面脚本之家的小编就带来win7系统提示防火墙无法更改某些设置错误代码0x8007437的原因及四种解决方法,一起来看看吧。故障原因分析:1... -
windows防火墙无法启动0x8007042c解决办法
2017-05-09 23:31:58windows防火墙无法启动0x8007042c解决办法因为有一天发现wmi provider host这个进程严重占用cpu,在网上搜说是防火墙的问题,当时修改了一下注册表的某个键,果然cpu下去了,但是后来发现edge、搜索框、内置的app都... -
Windows防火墙无法打开的解决方案--不看后悔
2016-08-17 21:36:47点击windows 7控制面板中防火墙的“推荐配置”没有反应 2.打开“服务”,无法启动windows firewall,并报错 3.打开“事件查看器”,选择“Windows 日志”-“系统”,找到最近发生的错误,其事件ID为7024,日志内容为... -
如何配置Windows XP SP2防火墙
2020-03-03 22:44:20如果您关闭了 Windows防火墙,请采取适当的附加措施以帮助保护您的系统。我们建议,为了使您的系统更加安全,应只有在尝试了其它所有的办法而别无选择的情况下才关闭Windows 防火墙。Windows 防火墙是Windows XP ... -
## 服务器端口开放教程+windows防火墙无法更改某些设置 错误代码0X8007解决方案
2020-06-13 09:51:361.依次点击“控制面板→系统和安全→Windows防火墙”,发现服务器防火墙未开放,选择开启防火墙或者使用运营商提供的服务器控制台来开放端口,点击左侧菜单中的“高级设置”,打开下图所示窗口: 2.鼠标右键点击... -
具有Windows PowerShell的具有高级安全性管理的Windows防火墙
2019-12-23 11:20:48具有Windows PowerShell的具有高级安全性管理的Windows防火墙 2016年8月31日 23分钟阅读 适用于:Windows Server 2012,Windows 8 具有Windows PowerShell的具有高级安全性的Windows防火墙管理指南提供了基本的... -
windows terminal无法正常下载报错解决办法
2022-06-01 20:28:47我的情况是,win10升win11,导致windows安全中心无法正常打开,以至于关闭不了windows defender和防火墙,导致我的激活软件已安装就被删除,我还关闭不了它。 由此,我就想通过windows terminal下载一个完整版的... -
高级安全windows防火墙管理单元无法加载解决方法
2016-10-23 21:22:08win键+R键,输入“services.msc”找到“windows fillwall”双击,启动类型选“自动”,然后点击”服务状态”下面的启动