亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python程序自動(dòng)以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法

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

前言

由于Windows的安全機(jī)制,Python寫的腳本缺少了管理員權(quán)限,運(yùn)行就會(huì)受到一些限制。

文章介紹Python 腳本自動(dòng)以管理員權(quán)限運(yùn)行的方法,

也就是如果腳本不是以管理員運(yùn)行,就自動(dòng)提升到管理員權(quán)限。

核心API函數(shù)

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

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

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

代碼實(shí)現(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:
    # 以管理員權(quán)限重新運(yùn)行程序
    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等庫(kù)打包python程序,則應(yīng)將ShellExecuteW的第四個(gè)參數(shù)替換為""。

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

本方法優(yōu)點(diǎn):

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

本方法缺點(diǎn):

在命令行窗口(cmd)中運(yùn)行python時(shí),會(huì)另外打開(kāi)一個(gè)命令行窗口,造成輸出的消息一閃而過(guò)。

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

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

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

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

import sys, os, win32api

def is_admin():
    # 由于win32api中沒(méi)有IsUserAnAdmin函數(shù),所以用了這種方法
    try:
        # 在c:\windows目錄下新建一個(gè)文件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:
    # 以管理員權(quán)限重新運(yùn)行程序
    win32api.ShellExecute(None,"runas", sys.executable, __file__, None, 1)

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

本方法優(yōu)點(diǎn):

  • 適用于Python 2和Python 3。

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    學(xué)習(xí)Python3 Dlib19.7進(jìn)行人臉面部識(shí)別

    本篇文章主要給大家詳細(xì)介紹了Python3利用Dlib19.7進(jìn)行人臉面部識(shí)別的相關(guān)知識(shí),一起學(xué)習(xí)參考下吧。
    2018-01-01
  • python語(yǔ)言元素知識(shí)點(diǎn)詳解

    python語(yǔ)言元素知識(shí)點(diǎn)詳解

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

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

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

    詳解Python設(shè)計(jì)模式編程中觀察者模式與策略模式的運(yùn)用

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

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

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

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

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

    寫一個(gè)Python腳本自動(dòng)爬取Bilibili小視頻

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

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

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

最新評(píng)論