如何使用python禁用Windows防火墙

如何使用python禁用Windows防火墙,python,windows,firewall,activepython,Python,Windows,Firewall,Activepython,我正在尝试为我正在工作的一个小项目编写自动化程序。 在此过程中,我需要使用python禁用Windows防火墙(对于每个Windows版本)(我更喜欢activepython,因为它已经安装) 我找了很多答案,但没有找到适合我需要的答案 我发现这个网站: 但问题是,当我从控制面板检查时 正在禁用防火墙 有人能帮我解决这个问题吗?最好的方法是使用WMI: import wmi,os c = wmi.WMI("WinMgmts:\root\Microsoft\HomeNet") for obj

我正在尝试为我正在工作的一个小项目编写自动化程序。 在此过程中,我需要使用python禁用Windows防火墙(对于每个Windows版本)(我更喜欢activepython,因为它已经安装)

我找了很多答案,但没有找到适合我需要的答案

我发现这个网站: 但问题是,当我从控制面板检查时 正在禁用防火墙


有人能帮我解决这个问题吗?

最好的方法是使用
WMI

import wmi,os

c = wmi.WMI("WinMgmts:\root\Microsoft\HomeNet")

for obj in c.HNet_ConnectionProperties():
    print obj
    print obj.IsFirewalled
    obj.IsFirewalled = False
    obj.Put_()
当然,要做到这一点,您需要以管理员身份运行该程序

希望这有帮助


Jason。

最好的方法是使用
WMI

import wmi,os

c = wmi.WMI("WinMgmts:\root\Microsoft\HomeNet")

for obj in c.HNet_ConnectionProperties():
    print obj
    print obj.IsFirewalled
    obj.IsFirewalled = False
    obj.Put_()
当然,要做到这一点,您需要以管理员身份运行该程序

希望这有帮助


Jason.

最简单的方法是让另一个程序为您完成工作。在本例中,netsh.exe有一组Windows Vista和更高版本使用的。例如:

import subprocess
subprocess.check_call('netsh.exe advfirewall set publicprofile state off')

默认配置文件为“domainprofile”、“privateprofile”和“publicprofile”,状态为“开”或“关”

最简单的方法是让另一个程序为您完成工作。在本例中,netsh.exe有一组Windows Vista和更高版本使用的。例如:

import subprocess
subprocess.check_call('netsh.exe advfirewall set publicprofile state off')

默认配置文件为“domainprofile”、“privateprofile”和“publicprofile”,状态为“开”或“关”

MSDN文章详细介绍了通过UI和编程控制Windows防火墙的方法。它们是:

  • 注册表设置位于

    • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\
      (本地设置)和
    • HKLM\SOFTWARE\Policys\Microsoft\WindowsFirewall\
      (组策略设置)
    更改设置具有即时效果:防火墙服务为密钥设置通知

  • 使用这些设置的设施:

    • COM接口
      HNetCfg.FwMgr
    • netsh防火墙
      netsh高级防火墙
    • WMI
      winmgmts:root/Microsoft/HomeNet
    • %windir%\Inf\Netfw.Inf
      (除非手动创建,否则不存在)
firewall.cpl
反映本地注册表设置(或覆盖组策略设置,如果存在)和当前活动的配置文件(有关预定义配置文件以及如何选择配置文件,请参阅XP/2003和Vista+的“Windows防火墙配置文件确定”部分


Python可以使用上述任何一种工具。尽管其他工具(组策略,
.reg
文件,
netsh
命令行)可能更方便,但这取决于您的任务(例如,
netsh
自动选择活动配置文件)。

MSDN文章详细介绍了控制Windows防火墙的方法,包括用户界面和编程方式。它们是:

  • 注册表设置位于

    • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\
      (本地设置)和
    • HKLM\SOFTWARE\Policys\Microsoft\WindowsFirewall\
      (组策略设置)
    更改设置具有即时效果:防火墙服务为密钥设置通知

  • 使用这些设置的设施:

    • COM接口
      HNetCfg.FwMgr
    • netsh防火墙
      netsh高级防火墙
    • WMI
      winmgmts:root/Microsoft/HomeNet
    • %windir%\Inf\Netfw.Inf
      (除非手动创建,否则不存在)
firewall.cpl
反映本地注册表设置(或覆盖组策略设置,如果存在)和当前活动的配置文件(有关预定义配置文件以及如何选择配置文件,请参阅XP/2003和Vista+的“Windows防火墙配置文件确定”部分


Python可以使用上述任何一种工具。尽管其他工具(组策略,
.reg
文件,
netsh
命令行)可能更方便,但这取决于您的任务(例如,
netsh
自动选择活动配置文件)。

我对这段代码有点问题,您能解释一下您在做什么吗?我需要外部模块吗?我对这个代码有点小问题,你能解释一下你在做什么吗?我是否需要外部模块?请说明“您的需求”,以便我们能够猜测什么可能“适合”他们。1) 您是否需要停止/禁用Windows防火墙服务或将其设置设置为“关闭”,如
Firewall.cpl
中所示?如果是后者-适用于所有网络接口还是仅适用于特定网络接口?2) 你想达到什么目标?可能有比Python程序更好的方法(如组策略或常规命令行)。netsh.exe在Windows 10中对我有效,例如
子进程。check_调用('netsh.exe advfirewall set publicprofile state off')
。默认配置文件为“domainprofile”、“privateprofile”和“publicprofile”,状态为“开”或“关”。@ivan_pozdeev-我需要将其设置为“关”,如防火墙中所示。请说明“您的需要”,以便我们能够猜测什么可能“适合”他们。1) 您是否需要停止/禁用Windows防火墙服务或将其设置设置为“关闭”,如
Firewall.cpl
中所示?如果是后者-适用于所有网络接口还是仅适用于特定网络接口?2) 你想达到什么目标?可能有比Python程序更好的方法(如组策略或常规命令行)。netsh.exe在Windows 10中对我有效,例如
子进程。check_调用('netsh.exe advfirewall set publicprofile state off')
。默认配置文件为“domainprofile”、“privateprofile”和“publicprofile”,状态为“开”或“关”。@ivan_pozdeev-我需要将其设置为“关”,如firewall.cplThi中所示