在UAC打开时继续运行脚本

时间:2017-08-24 22:09:40

标签: python python-3.x winapi uac pywin32

我需要运行一个在python中启动服务的脚本。问题是当命令在cmd中运行时,会出现UAC窗口。我找到了一些解决方案:

  1. 最简单的方法是更改​​UAC设置,使其不显示。但是,我想找到一种不必更改计算机设置的方法,因为这很危险,而且我们必须在每台可能运行脚本的本地计算机上更改它。
  2. 我找到了一种创建具有高管理员权限的任务的方法,这意味着我不必更改UAC设置,但仍应在所有计算机中创建任务。
  3. 我也尝试了这个How to run python script with elevated privilege on windows修复程序,但它仍然有效,但UAC窗口一直出现。
  4. 我甚至试过点击"是"按钮,但这里的问题是脚本停止UAC消息出现的时刻。我很欣赏这个问题的任何想法!如果我在消息打开时找到了继续运行脚本的方法,我可以轻松点击"是"那会解决它。

    这是我想要运行的脚本:

    import datetime
    import win32api, win32con
    import sys, os, traceback, types
    
    def run(test, browserName = None):
        import win32com.shell.shell as shell
        commands = 'python F:\service.py'
        shell.ShellExecuteEx(lpVerb='runas', lpFile='cmd.exe', lpParameters='/c '+commands)
    

    并在F:\ service.py中:

    import win32serviceutil
    serviceName = "myService"
    win32serviceutil.StopService(serviceName)
    
    #From here on is where I try of clicking "Yes" which is not working
    x = 953 
    y = 639
    click(x,y)
    
    def click(x,y):
        win32api.SetCursorPos((x,y))
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
    

0 个答案:

没有答案