【问题标题】:Windows 7 Firewall: Modify group items from command lineWindows 7 防火墙:从命令行修改组项
【发布时间】:2011-09-07 16:28:46
【问题描述】:

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

我的 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 复制,否则我只能同时启用或禁用这两种类型(公共和私有),这不是我想要的。

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

【问题讨论】:

    标签: java registry firewall windows-firewall netsh


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2011-05-05
      • 2014-07-04
      • 2014-12-05
      相关资源
      最近更新 更多