java - Windows 7 防火墙 : Modify group items from command line

标签 java registry firewall windows-firewall netsh

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

enter image description here

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

某些项目是防火墙中的单个记录。然而,“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 启用此组时,如果您仅启用其中一种类型,则它必须复制该组中的所有项目。一份为禁用类型,一份为启用类型。

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

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

最佳答案

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

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

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

关于java - Windows 7 防火墙 : Modify group items from command line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337343/

相关文章:

java - 封装的 Map<> 值的 keySet() 的时间复杂度

delphi - 在哪里存储程序设置而不是 HKEY_LOCAL_MACHINE?

azure - 如何从 Azure 应用服务连接到非标准端口上的外部服务?

java - 发送和接收 UDP 数据包?

security - Symfony 2 - 使用 HTTP 身份验证对话框隐藏整个网站

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

java - 后台功能如何在处理中工作?

java - 不从另一个类导入

注册表外的 Windows 版本?

c++ - 递归删除注册表项