如何以管理员权限运行os.system(“ start cmd”)

时间:2019-08-02 22:44:25

标签: python-3.6

我正在设置一个脚本,该脚本将与Windows 10上的防火墙一起使用,从而可以通过该脚本完成防火墙的调整。首先,我得到cmd提示。当我启动cmd时,我尝试需要管理员权限才能运行的netsh命令,如下所示:netsh advfirewall Firewall添加规则名称=“ All ICMP V4” dir = in action = block protocol = icmpv4,得到的是“请求的操作需要高程(以管理员身份运行)”。我正在创建的是一个防火墙功能,该防火墙功能在运行时将能够通过输入的脚本参数(netsh命令)关闭入站,出站或同时关闭网络流量。请记住,这是我的第一个实际大项目。我打算在此脚本中添加其他功能,因此,我是使用Windows 10命令提示符的新手。

我已经尝试过UAC路线,但没有成功。我在此站点上找到了此解决方案,并使用netsh命令进行了尝试:netsh advfirewall防火墙添加规则名称=“ All ICMP V4” dir = in action = block protocol = icmpv4,结果是:SyntaxError:无效的语法。

这是我开始的代码:

def防火墙():

os.system("start cmd")

这是我在stackover流上找到的解决方案:

ASADMIN ='asadmin'

如果sys.argv [-1]!= ASADMIN:

script = os.path.abspath(sys.argv[0])

params = ' '.join([script] + sys.argv[1:] + [ASADMIN])

shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)

sys.exit(0)

其他:

print ("I am elevated!")

sys.exit(0)

我希望能够运行netsh命令来基本调整Windows防火墙状态,例如阻止Internet协议,设置协议,查询防火墙规则。我将继续使用此脚本,直到获得运行它所需的内容为止。

感谢您在此方面的任何答复和帮助。

0 个答案:

没有答案