欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python程序自動以管理員權限運行的實現(xiàn)方法

 更新時間:2023年11月13日 10:56:41   作者:碼強01  
Windows上為了安全起見,python語言啟動的應用程序默認都不會使用admin管理員權限,但是在有些情況下我們又需要使用管理員權限啟動應用,這篇文章主要給大家介紹了關于Python程序自動以管理員權限運行的實現(xiàn)方法,需要的朋友可以參考下

前言

由于Windows的安全機制,Python寫的腳本缺少了管理員權限,運行就會受到一些限制。

文章介紹Python 腳本自動以管理員權限運行的方法,

也就是如果腳本不是以管理員運行,就自動提升到管理員權限。

核心API函數(shù)

將python提升到管理員權限運行需要調(diào)用ShellExecute這個API函數(shù)。

ShellExecute函數(shù)的用法如下(這里僅作了解 ):

ShellExecute(hWnd,Operation,FileName,Parameters,Directory,ShowCmd)
hWnd: 整數(shù) (指定父窗口句柄,如果沒有可用None代替)
Operation: 字符串 (指定動作, 譬如: open、runas、print、edit、explore、find)
FileName: 字符串 (指定要打開的文件或程序)
Parameters: 字符串 (給要打開的程序指定參數(shù))
Directory: 字符串 (缺省目錄)
ShowCmd: 整數(shù) (程序啟動后的窗口顯示方式,
正常為1、最小化為2、最大化為3)

代碼實現(xiàn)(1)

使用Python自帶的ctypes模塊,調(diào)用API函數(shù)的代碼:

import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    # 主程序?qū)懺谶@里
else:
    # 以管理員權限重新運行程序
    ctypes.windll.shell32.ShellExecuteW(None,"runas", sys.executable, __file__, None, 1)

如果是Python 2,把最后一行改成這樣:

ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

如果使用pyinstaller等庫打包python程序,則應將ShellExecuteW的第四個參數(shù)替換為""。

另外,在ShellExecuteW的第4個參數(shù)中可加入其他的命令行參數(shù),
在第6個參數(shù)中可指定窗口顯示方式,如最小化(為2)、最大化(為3)等。

本方法優(yōu)點:

  • 不需要外部庫,僅使用自帶的ctypes模塊。
  • 適用于Python 2和Python 3。

本方法缺點:

在命令行窗口(cmd)中運行python時,會另外打開一個命令行窗口,造成輸出的消息一閃而過。

(不過,據(jù)了解這似乎是Windows自身的安全機制造成的,而不是程序的bug,可能是用于防止漏洞)

代碼實現(xiàn)(2)

相比于Python自帶的ctypes庫,win32api庫更加廣為人知、使用方便。

使用pip的安裝方法:pip install pywin32使用win32api模塊的代碼:

import sys, os, win32api

def is_admin():
    # 由于win32api中沒有IsUserAnAdmin函數(shù),所以用了這種方法
    try:
        # 在c:\windows目錄下新建一個文件test01.txt
        testfile=os.path.join(os.getenv("windir"),"test01.txt")
        open(testfile,"w").close()
    except OSError: # 不成功
        return False
    else: # 成功
        os.remove(testfile) # 刪除文件
        return True

print(is_admin())
if is_admin():
    # 主程序?qū)懺谶@里
else:
    # 以管理員權限重新運行程序
    win32api.ShellExecute(None,"runas", sys.executable, __file__, None, 1)

如果是Python 2,將except OSError這一行改為except IOError

本方法優(yōu)點:

  • 適用于Python 2和Python 3。

總結

到此這篇關于Python程序自動以管理員權限運行實現(xiàn)的文章就介紹到這了,更多相關Python自動以管理員權限運行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    這篇文章主要介紹了python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法,涉及Python實現(xiàn)格式轉(zhuǎn)換的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)對相同數(shù)據(jù)分箱的小技巧分享

    Python實現(xiàn)對相同數(shù)據(jù)分箱的小技巧分享

    這篇文章主要給大家介紹了關于Python實現(xiàn)對相同數(shù)據(jù)分箱的小技巧,文中通過實例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • 學習Python3 Dlib19.7進行人臉面部識別

    學習Python3 Dlib19.7進行人臉面部識別

    本篇文章主要給大家詳細介紹了Python3利用Dlib19.7進行人臉面部識別的相關知識,一起學習參考下吧。
    2018-01-01
  • python語言元素知識點詳解

    python語言元素知識點詳解

    在本篇文章中小編給大家分享了關于python語言元素的相關知識點以及實例代碼,需要的朋友們跟著學習下。
    2019-05-05
  • Python中嵌套類的實現(xiàn)

    Python中嵌套類的實現(xiàn)

    本文主要介紹了Python中嵌套類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 詳解Python設計模式編程中觀察者模式與策略模式的運用

    詳解Python設計模式編程中觀察者模式與策略模式的運用

    這篇文章主要介紹了Python設計模式編程中觀察者模式與策略模式的運用,觀察者模式和策略模式都可以歸類為結構型的設計模式,需要的朋友可以參考下
    2016-03-03
  • Python模塊搜索概念介紹及模塊安裝方法介紹

    Python模塊搜索概念介紹及模塊安裝方法介紹

    這篇文章主要介紹了Python模塊搜索概念介紹及模塊安裝方法介紹,本文詳細講解了import模塊的運作原理,搜索路徑的過程以及模塊安裝的多種方法,需要的朋友可以參考下
    2015-06-06
  • python實現(xiàn)兩個文件合并功能

    python實現(xiàn)兩個文件合并功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)兩個文件合并功能,一個簡單的文件合并程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 寫一個Python腳本自動爬取Bilibili小視頻

    寫一個Python腳本自動爬取Bilibili小視頻

    這篇文章主要介紹了寫一個 Python 腳本自動爬取 Bilibili 小視頻的示例代碼,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • pandas計數(shù) value_counts()的使用

    pandas計數(shù) value_counts()的使用

    這篇文章主要介紹了pandas計數(shù) value_counts()的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論