【问题标题】:Requesting UAC elevation in a python script在 python 脚本中请求 UAC 提升
【发布时间】:2012-11-22 14:04:34
【问题描述】:

我需要我的 python 脚本来提升 UAC 权限。我一次又一次地尝试,无法弄清楚。

这是我现在的代码:

from win32com.shell.shell import ShellExecuteEx
from win32com.shell import shellcon
import win32process, win32event
import win32con
from ntsecuritycon import *

ASADMIN = 'asadmin'

if sys.argv[-1] != ASADMIN:
    script = os.path.abspath(sys.argv[0])
    params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
    ShellExecuteEx(fMask=shellcon.SEE_MASK_NOCLOSEPROCESS,
                    lpVerb="runas",
                    lpFile=sys.executable,
                    lpParameters=params,
                    nShow=win32con.SW_SHOW)
    sys.exit(0)

现在,我目前所掌握的信息是,它可以正常运行,并且会自行重新打开。重新打开的脚本返回

["c:\\users\\justin\\UAC.py", "asadmin"]

sys.argv

,但它仍然不允许我执行管理任务。

虽然修复此代码的帮助是最佳的,但我也准备尝试任何其他可行的方法,谢谢!

【问题讨论】:

  • 我想,但答案并不能真正帮助我编写代码。
  • 您是否尝试过将实际的 python.exe 设置为以管理员权限运行?然后它运行的任何东西也将具有这些权限。程序本身将无法使自己以管理员身份运行,如果可以的话,UAC 的意义何在?

标签: python uac


【解决方案1】:

使用以下内容:

import os
import sys
import win32com.shell.shell as shell
ASADMIN = 'asadmin'

if sys.argv[-1] != ASADMIN:
    script = os.path.abspath(sys.argv[0])
    params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
    shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
    print("I am root now.")

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 2018-08-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多