Captura de pantalla del proceso bajo el servicio de Windows

Tenemos que ejecutar un proceso desde un servicio de Windows y obtener una captura de pantalla de él.

Intentamos las llamadas BitBlt e PrintWindow Win32, pero ambos dan mapas de bits en blanco (negro).

Si ejecutamos nuestro código desde un proceso de usuario normal, funciona bien.

¿Es esto algo que es incluso posible? ¿O podría haber otro método para probar?

Cosas que probamos:

El servicio de Windows que se ejecuta como sistema local, ejecuta el proceso como sistema local -> la captura de pantalla fallaEl servicio de Windows que se ejecuta como Administrador, ejecuta el proceso como Administrador -> la captura de pantalla falla.La aplicación de Windows que se ejecuta como usuario XYZ, ejecuta un proceso como XYZ -> screenshot que funciona con BitBlt o PrintWindow.Se intentó comprobar "Permitir que el servicio interactúe con el escritorio" desde el sistema local

También notamos que PrintWindow funciona mejor para nuestro caso, funciona si la ventana está detrás de otra ventana.

Para otros requisitos, tanto el proceso principal como el secundario deben estar bajo el mismo usuario. Realmente no podemos usar la suplantación de un proceso a otro.

Respuestas a la pregunta(4)

Su respuesta a la pregunta