Pantalla de captura en la sesión de escritorio del servidor

He desarrollado un marco de prueba de GUI que realiza pruebas de integración del sitio web de nuestra empresa de forma programada. Cuando algo falla, tomará una captura de pantalla del escritorio, entre otras cosas. Esto se ejecuta sin supervisión en un usuario conectado en un servidor de Windows dedicado 2008.

El problem es tomar una captura de pantalla en un escritorio del que desconecté mi sesión de escritorio remoto. Me sale la siguiente excepción:

System.ComponentModel.Win32Exception (0x80004005): The handle is invalid     
at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)     
at System.Drawing.Graphics.CopyFromScreen(Point upperLeftSource, Point upperLeftDestination, Size blockRegionSize)     
at IntegrationTester.TestCaseRunner.TakeScreenshot(String name) in C:\VS2010\IntegrationTester\IntegrationTester\Config\TestCaseRunner.cs:line 144     
at IntegrationTester.TestCaseRunner.StartTest() in C:\VS2010\IntegrationTester\IntegrationTester\Config\TestCaseRunner.cs:line 96

LosTomar captura de pantalla(l método @ se ve así:

public static void TakeScreenshot(string name)
        {
            var bounds = Screen.GetBounds(Point.Empty);
            using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
            {
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
                }
                bitmap.Save("someFileName", ImageFormat.Jpeg);
            }
        }

Me he asegurado de que el protector de pantalla esté configurado en "Ninguno" sin tiempo de espera. También he implementado un código que hace un par de pinvokes aenvíe un movimiento del mouse, esperando que genere un controlador de gráficos de escritorio ... pero no.

IntPtr hWnd = GetForegroundWindow();
if (hWnd != IntPtr.Zero)
    SendMessage(hWnd, 0x200, IntPtr.Zero, IntPtr.Zero);

Cualquier consejo es apreciado.

Respuestas a la pregunta(6)

Su respuesta a la pregunta