有沒有跨平臺的方法來檢查我的Python腳本是否以管理員權限執行?不幸的是,os.getuid()
僅適用於UNIX,在Windows下不可用。在Windows下的Python腳本中檢查管理權限的跨平臺方法?
13
A
回答
32
import ctypes, os
try:
is_admin = os.getuid() == 0
except AttributeError:
is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0
print is_admin
4
試着做任何你需要的管理權限,並檢查失敗。
雖然這隻適用於某些事情,但您想做什麼?
3
如果您檢查腳本運行的是哪個平臺(使用sys.platform
),並根據它進行測試(例如,從另一個平臺特定的模塊導入一些hasAdminRights功能。
在Windows上,您可以使用os.access
來檢查Windows\System32
是否可寫,但請記住嘗試檢索系統實際的「Windows」文件夾路徑,可能使用pywin32。不要硬編碼。
1
管理員組成員(域/本地/企業)是一回事..
定製您的應用程序不使用全面的權限和設置細粒度權限是一個更好的選擇,特別是如果正在使用的應用程序iinteractively。
對特定命名權限(se_shutdown se_restore等)進行測試,文件權限更加準確,更容易診斷。
1
這裏有一個效用函數從我接受的答案創建:
import os
import ctypes
class AdminStateUnknownError(Exception):
"""Cannot determine whether the user is an admin."""
pass
def is_user_admin():
# type:() -> bool
"""Return True if user has admin privileges.
Raises:
AdminStateUnknownError if user privileges cannot be determined.
"""
try:
return os.getuid() == 0
except AttributeError:
pass
try:
return ctypes.windll.shell32.IsUserAnAdmin() == 1
except AttributeError:
raise AdminStateUnknownError
相關問題
- 1. 跨平臺的shell腳本
- 2. VBScript:檢查腳本是否具有管理權限
- 3. 跨平臺的svn管理(Makefiles&Visual Studio)
- 4. 跨平臺的源代碼管理?
- 5. 給mac上的python腳本管理權限
- 6. 在跨平臺python中查找usb gps
- 7. 單一方法的管理員權限
- 8. 單一方法的管理員權限
- 9. 權限,Python腳本
- 10. 查找python包含文件夾的跨平臺方法
- 11. C#管理員權限 - 檢查
- 12. 如何檢查管理員權限C#
- 13. 在Win-7的perl腳本中獲取管理員權限
- 14. 分發跨平臺的python3腳本
- 15. 針對shell腳本的跨平臺getopt
- 16. OOTB在運行VS2010 Installer MSI之前檢查管理權限的方法?
- 17. 在Clojure(腳本)中編寫跨平臺宏的正確方法是什麼?
- 18. 在我的Google協作平臺的某個位置管理Google Apps腳本的權限
- 19. 針對windows,Linux,MacOS的跨平臺腳本X
- 20. 在沒有管理員權限的Windows上安裝Python 3.6.2
- 21. 跨平臺分區管理庫?
- 22. 跨平臺C++目錄管理
- 23. 在Python中插入文本到raw_input(以避免readine)的跨平臺方法
- 24. Python - 檢查用戶是否具有管理員權限
- 25. 在PowerShell腳本中測試管理權限?
- 26. Python的管理平臺API:journals.filter使用
- 27. SBT:設置java.library.path的跨平臺方法?
- 28. 跨平臺NPM啓動腳本
- 29. 跨平臺的/ dev/Python中的空
- 30. 使用Python在Windows上傳遞管理權限
我是一個Linux程序員。什麼是「管理權限」?這是一個許可? – 2009-06-22 10:46:04
root權限,等於「sudo something」 – grigoryvp 2009-06-22 10:52:32
聽起來不像「管理權限」這個概念是跨平臺的話。沒有微不足道的平行線。 – 2009-06-22 11:37:57