我正在尝试将自动化编写到我正在做的一个小项目中。 在进程中我需要禁用Windows防火墙(对于每个Windows版本)使用python (我更喜欢activepython,因为它已经安装)。
我找了很多答案,但我找不到任何符合我需要的答案。
我找到了这个网站: https://mail.python.org/pipermail/python-win32/2012-July/012434.html 但问题是,当我从控制面板检查实际 禁用防火墙没有发生......
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
最好的方法是使用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_()
当然,要做到这一点,您需要以管理员身份运行该程序。
希望这有帮助,
杰森。
答案 1 :(得分:0)
最简单的方法是让另一个程序为您完成工作。在这种情况下,netsh.exe具有Windows Vista及更高版本使用的一组commands to control the Advanced Firewall。例如:
import subprocess
subprocess.check_call('netsh.exe advfirewall set publicprofile state off')
默认配置文件是" domainprofile"," privateprofile"和" publicprofile",状态是" on"或"关闭"。
答案 2 :(得分:0)
在Windows Firewall Tools and Settings MSDN文章中详细介绍了使用UI和编程方式控制Windows防火墙的方法。他们是:
的注册表设置
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\<profile>
(本地设置)和HKLM\SOFTWARE\Policies\Microsoft\WindowsFirewall\<profile>
(组策略设置)。更改设置具有即时效果:防火墙服务显然会为键设置通知。
使用这些设置的设施:
HNetCfg.FwMgr
netsh firewall
(高级防火墙netsh advfirewall
)winmgmts:root/Microsoft/HomeNet
%windir%\Inf\Netfw.inf
(除非手动创建,否则缺席) firewall.cpl
反映了本地注册表设置(或覆盖组策略,如果它们存在and doesn't allow to change them)和当前活动的配置文件(对于预定义的配置文件以及如何选择一个,请参阅How Windows Firewall Works ,&#34; Windows防火墙配置文件确定&#34;部分用于XP / 2003和Understanding Firewall Profiles用于Vista +。)
Python可以与上述任何设施一起使用。虽然其他工具(组策略,.reg
文件,netsh
命令行)可能更方便,具体取决于您的任务(例如netsh
自动选择活动配置文件)。
答案 3 :(得分:-1)
# -*- 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