如何使用python禁用Windows防火墙



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

寻找了很多答案,但没有找到任何适合我需求的答案。

我找到了这个网站:https://mail.python.org/pipermail/python-win32/2012-July/012434.html但问题是,当我从控制面板检查实际未禁用防火墙...

有人可以帮助我解决这个问题吗?

最好的方法是使用 WMI

import wmi,os
c = wmi.WMI("WinMgmts:rootMicrosoftHomeNet")
for obj in c.HNet_ConnectionProperties():
    print obj
    print obj.IsFirewalled
    obj.IsFirewalled = False
    obj.Put_()

当然,要执行此操作,您需要以管理员身份运行该程序。

希望这有帮助,

杰森。

使用 UI 和以编程方式控制 Windows 防火墙的方法在 Windows 防火墙工具和设置 MSDN 文章中进行了广泛介绍。它们是:

  • 注册表设置位于

    • HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters<profile>(本地设置(和
    • HKLMSOFTWAREPoliciesMicrosoftWindowsFirewall<profile>(组策略设置(。

    更改设置具有立竿见影的效果:防火墙服务显然会为密钥设置通知。

  • 与设置配合使用的设施:

    • COM 接口HNetCfg.FwMgr
    • netsh firewall(高级防火墙netsh advfirewall(
    • WMI winmgmts:root/Microsoft/HomeNet
    • %windir%InfNetfw.inf(除非手动创建,否则不存在(

firewall.cpl反映本地注册表设置(如果组策略设置存在且不允许更改,则覆盖组策略设置(和当前活动的配置文件(有关预定义配置文件以及如何选择配置文件,请参阅 Windows 防火墙的工作原理、XP/2003 的"Windows 防火墙配置文件确定"部分和了解 Vista+ 的防火墙配置文件(。

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

最简单的方法是让另一个程序为您完成工作。在这种情况下,netsh.exe 有一组命令来控制 Windows Vista 及更高版本使用的高级防火墙。例如:

import subprocess
subprocess.check_call('netsh.exe advfirewall set publicprofile state off')
默认配置文件为">

域配置文件"、"私有配置文件"和"公共配置文件",状态为"开"或"关"。

# -*- coding: utf-8 -*-
'''
State for configuring Windows Firewall
'''

def __virtual__():
'''
Load if the module firewall is loaded
'''
return 'win_firewall' if 'firewall.get_config' in __salt__ else False

def disabled(name):
'''
Disable all the firewall profiles (Windows only)
'''
ret = {'name': name,
       'result': True,
       'changes': {},
       'comment': ''}
# Determine what to do
action = False
current_config = __salt__['firewall.get_config']()
for key in current_config:
    if current_config[key]:
        action = True
        ret['changes'] = {'fw': 'disabled'}
        break
if __opts__['test']:
    ret['result'] = None
    return ret
# Disable it
if action:
    ret['result'] = __salt__['firewall.disable']()
    if not ret['result']:
        ret['comment'] = 'Could not disable the FW'
else:
    ret['comment'] = 'All the firewall profiles are disabled'
return ret

相关内容

  • 没有找到相关文章

最新更新