第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從Python腳本中請(qǐng)求UAC提升?

從Python腳本中請(qǐng)求UAC提升?

胡說叔叔 2019-07-03 15:36:55
從Python腳本中請(qǐng)求UAC提升?我希望我的Python腳本在Vista上復(fù)制文件。當(dāng)我從正常人那里運(yùn)行時(shí)cmd.exe窗口中,不會(huì)生成錯(cuò)誤,但文件不會(huì)被復(fù)制。如果我跑cmd.exe“作為管理員”,然后運(yùn)行我的腳本,它工作得很好。這是有意義的,因?yàn)橛脩魩艨刂?UAC)通常會(huì)阻止許多文件系統(tǒng)操作。有沒有辦法,從Python腳本中調(diào)用UAC提升請(qǐng)求(那些對(duì)話框中寫著“這樣的應(yīng)用程序需要管理訪問,這可以嗎?”)如果這是不可能的,那么我的腳本是否至少可以檢測(cè)到它沒有被提升,這樣它就可以優(yōu)雅地失敗?
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

實(shí)現(xiàn)這一目標(biāo)的簡(jiǎn)單方法如下:

import ctypes, sysdef is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return Falseif is_admin():
    # Code of your program hereelse:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

如果您使用的是Python2.x,那么您應(yīng)該將最后一行替換為:

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

還請(qǐng)注意,如果您將python腳本轉(zhuǎn)換為可執(zhí)行文件(使用以下工具)py2execx_freezepyinstaller)然后,應(yīng)該將第四個(gè)參數(shù)替換為空字符串("").

這里的一些優(yōu)點(diǎn)是:

  • 不需要外部庫(Windows擴(kuò)展也不需要Python)。它只使用

    ctypes

    從標(biāo)準(zhǔn)圖書館。
  • 同時(shí)工作在Python 2和Python 3上。
  • 不需要修改文件資源,也不需要?jiǎng)?chuàng)建清單文件。
  • 如果不在if/etc語句下面添加代碼,則代碼將不會(huì)執(zhí)行兩次。
  • 如果用戶拒絕UAC提示,您可以很容易地將其修改為具有特殊行為。
  • 您可以指定修改第四個(gè)參數(shù)的參數(shù)。
  • 您可以指定修改第六個(gè)參數(shù)的顯示方法。

基礎(chǔ)ShellExecute調(diào)用的文檔是這里.


查看完整回答
反對(duì) 回復(fù) 2019-07-03
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

在一段時(shí)間內(nèi),您似乎無法提高應(yīng)用程序特權(quán)來執(zhí)行特定的任務(wù)。Windows需要在程序開始時(shí)知道應(yīng)用程序是否需要某些特權(quán),并將要求用戶在應(yīng)用程序執(zhí)行以下任務(wù)時(shí)確認(rèn)需要那些特權(quán)。有兩種方法可以做到這一點(diǎn):

  1. 編寫一個(gè)清單文件,告訴Windows應(yīng)用程序可能需要一些特權(quán)
  2. 在另一個(gè)程序中以提升的權(quán)限運(yùn)行應(yīng)用程序

這,這個(gè) 文章更詳細(xì)地解釋這是如何工作的。

如果您不想為Create11-Process API編寫一個(gè)討厭的ctype包裝器,我會(huì)做的是使用代碼項(xiàng)目文章中解釋的ShellExecuteEx技巧(Pywin 32附帶了一個(gè)ShellExecute的包裝器)。多么,怎樣?就像這樣:

當(dāng)程序啟動(dòng)時(shí),它會(huì)檢查它是否具有管理員權(quán)限,如果沒有,它使用ShellExecute技巧運(yùn)行自己,并立即退出,如果有,它將執(zhí)行手頭的任務(wù)。

當(dāng)您將您的程序描述為“腳本”時(shí),我想這足以滿足您的需要。

干杯。


查看完整回答
反對(duì) 回復(fù) 2019-07-03
  • 3 回答
  • 0 關(guān)注
  • 1444 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)