Python pyscreenshot获取远程windows服务器';没有登录的屏幕截图

Python pyscreenshot获取远程windows服务器';没有登录的屏幕截图,python,windows,backend,Python,Windows,Backend,python2脚本是由系统守护进程(如SaltStack,进程用户是管理员)执行的,该脚本运行良好,在我连接并登录服务器时保存了屏幕截图,但在没有人登录的情况下,它将引发错误 import pyscreenshot getPic = pyscreenshot.grab(bbox=(0, 0, 1920, 1080)) ## line 43 # getPic = pyscreenshot.grab() ## work as same as before line getPic.save('scre

python2脚本是由系统守护进程(如SaltStack,进程用户是管理员)执行的,该脚本运行良好,在我连接并登录服务器时保存了屏幕截图,但在没有人登录的情况下,它将引发错误

import pyscreenshot
getPic = pyscreenshot.grab(bbox=(0, 0, 1920, 1080)) ## line 43
# getPic = pyscreenshot.grab() ## work as same as before line
getPic.save('screenshot.png')
错误信息:

Traceback (most recent call last):
  File ".../.../get_desktop_screenshot.py", line 43, in <module>
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 43, in grab
    return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 29, in _grab
    return childprocess_grab(_grab_simple, backend, bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\childproc.py", line 34, in childprocess_grab
    return childprocess_grab_popen(backend, bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\childproc.py", line 54, in childprocess_grab_popen
    raise FailedBackendError(p)
pyscreenshot.loader.FailedBackendError: <EasyProcess cmd_param=['C:\\Python27\\python.exe', '-m', 'pyscreenshot.cli.grab_to_file', 'c:\\users\\admini~1\\appdata\\local\\temp\\pyscreenshothgubzc\\screenshot.png', '0', '0', '1920', '1080', '--backend', ''] cmd=['C:\\Python27\\python.exe', '-m', 'pyscreenshot.cli.grab_to_file', 'c:\\users\\admini~1\\appdata\\local\\temp\\pyscreenshothgubzc\\screenshot.png', '0', '0', '1920', '1080', '--backend', ''] oserror=None return_code=1 stdout="" stderr="Traceback (most recent call last):

  File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\lib\site-packages\pyscreenshot\cli\grab_to_file.py", line 8, in <module>
    def main(filename, x1, y1, x2, y2, backend=""):
  File "C:\Python27\lib\site-packages\entrypoint2\__init__.py", line 440, in entrypoint
    return func(**kwargs)
  File "C:\Python27\lib\site-packages\pyscreenshot\cli\grab_to_file.py", line 28, in main
    im = pyscreenshot.grab(bbox=bbox, childprocess=False, backend=backend)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 43, in grab
    return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 31, in _grab
    return _grab_simple(backend, bbox, filename)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 17, in _grab_simple
    return backend_obj.grab(bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\plugins\pil.py", line 17, in grab
    return self.ImageGrab.grab(bbox)
  File "C:\Python27\lib\site-packages\PIL\ImageGrab.py", line 41, in grab
    size, data = grabber()
IOError: screen grab failed" timeout_happened=False>
回溯(最近一次呼叫最后一次):
文件“..../get_desktop_screenshot.py”,第43行,在
文件“C:\Python27\lib\site packages\pyscreenshot\\uuuu init\uuuu.py”,第43行,在抓取中
return _grab(childprocess=childprocess,backend=backend,bbox=bbox)
文件“C:\Python27\lib\site packages\pyscreenshot\\uuuu init\uuuu.py”,第29行,在\u grab中
返回childprocess\u grab(\u grab\u simple,backend,bbox)
文件“C:\Python27\lib\site packages\pyscreenshot\childproc.py”,第34行,在childprocess\u grab中
返回子进程\u抓取\u popen(后端,bbox)
文件“C:\Python27\lib\site packages\pyscreenshot\childproc.py”,第54行,在childprocess\u grab\u popen中
提升失败的靠背错误(p)
pyscreenshot.loader.FailedBackender错误:

可能有人说它需要鼠标事件或键盘事件,但这对我不起作用,该过程将循环使用某人连接并登录远程机器

例如:

while True:
    win32api.keybd_event(win32con.VK_SNAPSHOT, 0, 0, 0)
    time.sleep(1)
    win32api.keybd_event(win32con.VK_SNAPSHOT, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(5)
    filename = 'a.png'
    im = ImageGrab.grabclipboard()
    if im is None:
        print('===>is None ')
    else:
        print('===>' + str(im.size))
        break
从“”

从“”

学习: “”

简言之,只有在登录用户下运行时,才能创建正确的屏幕截图。如果用户匹配,则计划任务符合条件。以系统管理员或本地管理员身份运行将不允许您获取屏幕截图

也许这种情况毫无意义

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)