Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Windows 7防火墙:从命令行修改组项目_Java_Registry_Firewall_Windows Firewall_Netsh - Fatal编程技术网

Java Windows 7防火墙:从命令行修改组项目

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) ---------

我正在创建一个界面,允许用户管理(除其他外)Windows防火墙。Windows附带的GUI如下所示

我的GUI是用Java编写的,用于读取当前设置和保存更改

有些项目是防火墙中的单个记录。但是,“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
在这种情况下,整个组被禁用,但可以对类型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
将它们添加回