1

我正在创建一个界面,允许用户管理(除其他外)Windows 防火墙。Windows自带的GUI是这样的

在此处输入图像描述

我的 GUI 是用 Java 编写的,并使用命令netsh advfirewall firewall读取当前设置并保存更改。

有些项目是防火墙中的单个记录。然而,“Windows 远程管理”项目是“分组”项目之一。这是多个项目的组合。这是组合中的其中一项。

Rule Name:                            Windows Remote Management - Compatibility
Mode (HTTP-In)
----------------------------------------------------------------------
Enabled:                              No
Direction:                            In
Profiles:                             Private,Public
Grouping:                             Windows Remote Management
LocalIP:                              Any
RemoteIP:                             LocalSubnet
Protocol:                             TCP
LocalPort:                            80
RemotePort:                           Any
Edge traversal:                       No
Action:                               Allow

在这种情况下,整个组被禁用,但可以为公共或私有类型启用它,或两者兼而有之。(更不用说域)

当您使用 Windows GUI 启用此组时,如果您只启用其中一种类型,则必须复制组中的所有项目。禁用类型一份,启用类型一份。

当我尝试创建第二个副本时出现问题。该netsh advfirewall firewall add rule命令不允许我对新项目进行分组。所以这意味着我不能创建第二个副本!这意味着,除非该项目已被 Windows 复制,否则我只能同时启用或禁用这两种类型(公共和私有),这不是我想要的。

如何创建第二个副本?关于如何使用 Java 或命令行进行操作的任何想法?我发现 netsh 导出会创建一个字节文件。看起来它是一个注册表字节文件。有没有办法使用编辑防火墙reg query?防火墙设置将存储在注册表中的什么位置?我希望避免自己编写.exe.

4

1 回答 1

0

注册表中存储 Windows 防火墙规则的位置是:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules

此注册表项中的数据具有可通过 编辑的相同变量netsh advfirewall firewall。大多数实际名称和描述都是类似这样的引用@FirewallAPI.dll,-31293。防火墙条目没有唯一的 ID,并由它们的名称标识。正因为如此,并且因为我无法找出引用指向的内容,所以我使用删除了防火墙条目netsh advfirewall firewall并使用reg query.

于 2012-04-19T22:02:33.950 回答