Python給exe添加以管理員運(yùn)行的屬性方法詳解
需求
有些應(yīng)用每次啟動(dòng)都需要用管理員權(quán)限運(yùn)行,比如Python注入dll時(shí),編輯器或cmd就需要以管理員權(quán)限運(yùn)行,不然注入就會(huì)失敗。
這篇文章用編程怎么修改配置實(shí)現(xiàn)打開(kāi)某個(gè)軟件都是使用管理員運(yùn)行,就不用每次都右鍵點(diǎn)擊以管理員身份運(yùn)行此程序
。主要是給小白配置,防止他忘了以管理員權(quán)限運(yùn)行,又跑過(guò)來(lái)問(wèn)我為啥Hook失敗了
非編程方式
如果是自己想修改的話:右鍵軟件或桌面快捷方式,兼容性->然后勾選以管理身份運(yùn)行此程序
編程方式
有代碼的軟件
如果你需要運(yùn)行的軟件是自己寫(xiě)的,想在運(yùn)行時(shí)申請(qǐng)管理員權(quán)限,可以在清單文件里增加一行:
<requestedExecutionLevel level='requireAdministrator' uiAccess='true' />
在visual studio中,可以右鍵項(xiàng)目屬性,鏈接器->清單文件,UAC執(zhí)行級(jí)別改成requireAdministrator
其他軟件
軟件本身沒(méi)有申請(qǐng)管理員權(quán)限,而你又想讓他以管理員權(quán)限運(yùn)行。那就得知道非編程方式勾選的那個(gè)配置實(shí)際保存在哪里,你可以直接修改它保存的位置也能達(dá)到一樣的效果
經(jīng)過(guò)搜索發(fā)現(xiàn),這個(gè)配置是保存在注冊(cè)表中。
當(dāng)前用戶(hù)對(duì)應(yīng)的注冊(cè)表路徑
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
所有用戶(hù)統(tǒng)一的配置路徑
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
當(dāng)你在右鍵勾選這個(gè)選項(xiàng)時(shí),當(dāng)前用戶(hù)的注冊(cè)表路徑下就會(huì)多出一個(gè)鍵來(lái),鍵名是軟件的絕對(duì)路徑,值則是~ RUNASADMIN
如果你刪除掉這個(gè)鍵,則在右鍵看的時(shí)候,選項(xiàng)是沒(méi)有被勾選上的
另外,其他幾個(gè)選項(xiàng)也是在這個(gè)路徑下,分別對(duì)應(yīng)不同的值,這里我就不演示了。
這里以Python為例修改注冊(cè)表,讓Python每次都以管理員權(quán)限啟動(dòng),這種其實(shí)屬于危險(xiǎn)行為,因?yàn)镻ython也可以在你電腦上做任何事
import ctypes import sys from winreg import * def add_runas(): exe_path = sys.executable # 判斷當(dāng)前運(yùn)行的Python是否具有管理員權(quán)限,沒(méi)有則申請(qǐng) if not ctypes.windll.shell32.IsUserAnAdmin(): ctypes.windll.shell32.ShellExecuteW(None, "runas", exe_path, __file__, None, 1) reg_path = r"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" reg_key = OpenKey(HKEY_CURRENT_USER, reg_path, access=KEY_SET_VALUE | KEY_READ) runas_value = "~ RUNASADMIN" try: value = QueryValueEx(reg_key, exe_path) except FileNotFoundError: SetValueEx(reg_key, exe_path, 0, REG_SZ, runas_value) else: if runas_value[2:] not in value[0]: SetValueEx(reg_key, exe_path, 0, REG_SZ, value[0] + ' ' + runas_value[2:]) if __name__ == "__main__": add_runas()
其他方式
搜索的時(shí)候還看到可以通過(guò)修改快捷方式來(lái)達(dá)到這樣的效果,不過(guò)我測(cè)試并不行,可能在最新的系統(tǒng)這個(gè)屬于bug被修復(fù)了。如果有人測(cè)試成功的話,可以私聊我下原因
以上就是Python給exe添加以管理員運(yùn)行的屬性的詳細(xì)內(nèi)容,更多關(guān)于Python給exe添加以管理員運(yùn)行的屬性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài),結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中繼承、多態(tài)的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03利用Python實(shí)現(xiàn)最小二乘法與梯度下降算法
這篇文章主要介紹了利用Python實(shí)現(xiàn)最小二乘法與梯度下降算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02python實(shí)現(xiàn)隨機(jī)調(diào)用一個(gè)瀏覽器打開(kāi)網(wǎng)頁(yè)
下面小編就為大家分享一篇python實(shí)現(xiàn)隨機(jī)調(diào)用一個(gè)瀏覽器打開(kāi)網(wǎng)頁(yè),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python批量處理工作簿和工作表的實(shí)現(xiàn)示例
本文主要介紹了使用Python批量處理工作簿和工作表,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Pycharm無(wú)法顯示動(dòng)態(tài)圖片的解決方法
今天小編就為大家分享一篇Pycharm無(wú)法顯示動(dòng)態(tài)圖片的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10