Java Windows 7防火墙:从命令行修改组项目
我正在创建一个界面,允许用户管理(除其他外)Windows防火墙。Windows附带的GUI如下所示 我的GUI是用Java编写的,用于读取当前设置和保存更改 有些项目是防火墙中的单个记录。但是,“Windows远程管理”项目是“分组”项目之一。这是多个项目的组合。以下是组合中的其中一项Java Windows 7防火墙:从命令行修改组项目,java,registry,firewall,windows-firewall,netsh,Java,Registry,Firewall,Windows Firewall,Netsh,我正在创建一个界面,允许用户管理(除其他外)Windows防火墙。Windows附带的GUI如下所示 我的GUI是用Java编写的,用于读取当前设置和保存更改 有些项目是防火墙中的单个记录。但是,“Windows远程管理”项目是“分组”项目之一。这是多个项目的组合。以下是组合中的其中一项 Rule Name: Windows Remote Management - Compatibility Mode (HTTP-In) ---------
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
在这种情况下,整个组被禁用,但可以对类型public或private或两者同时启用。(更不用说域名了)
使用Windows GUI启用此组时,如果仅启用其中一种类型,则必须复制组中的所有项目。一份副本用于禁用类型,一份副本用于启用类型
当我尝试创建第二个副本时,问题出现了。不允许我对新项目设置分组。这意味着我无法创建第二个副本!这意味着,除非项目已经被Windows复制,否则我只能同时启用或禁用这两种类型(公共和私有),这不是我想要的
如何创建第二个副本?有没有关于如何使用Java或命令行的想法?我发现netsh导出会创建一个字节文件。它看起来像是一个注册表字节文件。有没有办法使用
reg query
编辑防火墙?防火墙设置将存储在注册表的何处?我希望避免编写自己的.exe
注册表中存储Windows防火墙规则的位置是:
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
此注册表项中的数据具有可通过netsh advfirewall firewall
编辑的相同变量。大多数实际名称和描述都是如下所示的引用@FirewallAPI.dll,-31293
。防火墙条目没有唯一的ID,由其名称标识。因此,由于我无法找到引用所指向的内容,我使用netsh advfirewall Firewall
删除了防火墙条目,并使用reg query
将它们添加回