【问题标题】:Unable to open CMD as admin using Python Pyautogui无法使用 Python Pyautogui 以管理员身份打开 CMD
【发布时间】:2019-02-17 13:20:09
【问题描述】:

我正在尝试使用 Python 3.7 pyautogui 以管理员身份打开 CMD。我可以导航到开始菜单图标,键入“cmd”并按 ctrl + shift +enter 以在管理员模式下打开 cmd。

然后会弹出一条消息,提示是否以管理员身份打开。当我使用 pyautogui.press('left') 时,它没有按下左键。

try:
    import pyautogui
    import time
    pyautogui.FAILSAFE = True
    pyautogui.PAUSE = 0.5
    mouseMovementDuration = 2 #every mouse movement will take 2 secs
    intervalBetweenKeyPress = 0.5
    def runCMDasAdmin():
        x, y = pyautogui.locateCenterOnScreen(r'C:\\Users\\Saru\\Desktop\\PyAutoGUI\\images\\startmenu.png')
        pyautogui.click(x=x, y=y,button='left',duration=mouseMovementDuration) 
        pyautogui.typewrite('cmd', interval=intervalBetweenKeyPress)
        pyautogui.hotkey('ctrl', 'shift', 'enter')
        pyautogui.press(['left','enter'],interval=intervalBetweenKeyPress)

    print(pyautogui.size()) #It will give you the size of the screen
    pyautogui.moveTo(x=1919,y=1079,duration=mouseMovementDuration)
    pyautogui.moveTo(x=1,y=1,duration=mouseMovementDuration)
    runCMDasAdmin()
except Exception as e:
    print("Exception Raised------>",str(e))

我想使用 pyautogui 以管理员身份打开 cmd。请帮忙。

【问题讨论】:

标签: python python-3.x pyautogui


【解决方案1】:

由于用户访问控制 (UAC) 提示在一个单独的层上工作,超出了任何自动化/代码组件的控制,以确保用户的安全。所以唯一的解决方案是完全禁用 UAC 提示。禁用 UAC 提示的过程 - 在开始菜单类型 UAC 上,选择用户访问控制设置,将其设置为从不通知。

【讨论】:

    【解决方案2】:

    您可以使用批处理脚本以管理员身份打开 CMD。 下面是代码。

    @echo off
    
    :: BatchGotAdmin
    :-------------------------------------
    REM  --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
        echo Requesting administrative privileges...
        goto UACPrompt
    ) else ( goto gotAdmin )
    
    :UACPrompt
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        set params = %*:"=""
        echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
    
    :gotAdmin
        pushd "%CD%"
        CD /D "%~dp0"
    :--------------------------------------
    

    【讨论】:

    • 抱歉,您的代码正在创建多个命令提示符实例并且无休止地运行,并且它们都没有以管理权限打开 1 个 cmd。我使用 os.system(BatchFilePath) 来运行批处理文件。
    • 我在这里看到了问题。此代码是从 bat 文件以管理员权限启动 cmd。如果你想从 python 打开一个 cmd,你必须首先以管理员权限启动 python,这将使你打开的任何东西都具有相同的权限。为了实现这一点,您可以在 Python 脚本中添加来自 answer 的代码。
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多