前言
由于疫情的持续肆虐,出行成了大问题。为了尽量减少风险,外地的办公室是能不过去就不过去。一般问题远程就解决了,但碰到系统因故障需重装的情况就比较麻烦,外地的同事并不是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;