[转]Python 获取Windows管理员权限
最近在寫一個可以自動更換 hosts 的 python 腳本,但是操作 hosts 需要管理員權限 ,所以就想著要怎么獲取。
總結了一下,有三種方法可以獲取,下面分別介紹一下。
1. 以管理員運行 cmd
這個方法很簡單,也無需多說,右鍵以管理員運行就可以了,然后在里面運行 python 腳本就有管理員權限了。
2. 用 cmd 腳本獲取
假設我要運行的文件是 test.py,則我可以寫一個 cmd 腳本,不妨叫做 go.cmd,在里面寫入:
@echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"start python test.py保存,與 test.py 放在同一文件夾,雙擊 go.cmd 運行,會彈出提示,點擊“是”就會以管理員運行 test.py 了。
3. 用 python 代碼獲取
以上兩種方法都能用,但是總覺得不夠優雅,所以接下來我找到了一種可以直接用 python 代碼直接獲取管理員權限的方法,可以說是相當優雅了。
以下代碼來源:python如果獲取windows管理員權限(一)
from __future__ import print_function import ctypes, sysdef is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return False if is_admin():# 將要運行的代碼加到這里 else:if sys.version_info[0] == 3:ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)else:#in python2.xctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)以上代碼運行時先判斷是否擁有管理員權限,如果沒有,則調用那個函數獲取權限以后再運行一次代碼,所以如果在命令行中運行的話,會再彈出一個小黑框。而且根據原博客,這個不能在 IDE 中運行,但是我沒有 IDE ,所以沒有進行測試。
4. 不彈出UAC解決方法
有的人可能使用上面的 2 和 3 方法發現不會彈出授權彈框,這可能是因為系統的 UAC 被關掉了,按照以下步驟開啟:
這里也有圖文教程:win10系統如何開啟UAC
---------------------
作者:MemoryD
來源:CSDN
原文:https://blog.csdn.net/MemoryD/article/details/83148305
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件
總結
以上是生活随笔為你收集整理的[转]Python 获取Windows管理员权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python来获取Github IP地
- 下一篇: BAT批处理代码快速打开注册表并定位到指