GetSystemMetrics () devuelve resultados diferentes para .NET 4.5 y .NET 4.0

Durante un proceso de migración de aplicaciones .NET 4.0 -> .NET 4.5, he descubierto un comportamiento extremadamente extraño. He podido rastrear este problema hasta este breve fragmento de código:

class Program
{
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    public static extern int GetSystemMetrics(int nIndex);

    static void Main(string[] args)
    {
        const int CXFRAME = 0x20;
        const int CYFRAME = 0x21;

        var dx = GetSystemMetrics(CXFRAME);
        var dy = GetSystemMetrics(CYFRAME);

        Console.WriteLine("{0}x{1}", dx, dy);
        Console.ReadKey();
    }
}

Cuando se compila conTarget Framework = 4.0 (y también 2.0, 3.0, 3.5), da salida8x8

Cuando se compila conTarget Framework = 4.5, da salida4x4

La ejecución de este ejemplo con el depurador MSVS2012 también produce siempre4x4 (conalguna marco de destino).

Otras opciones (perfil del marco de destino, plataforma de destino, habilitación / deshabilitación de Aero) no afectan el resultado, las únicas cosas que cambian el resultado son el marco de destino y se ejecutan con el depurador. He podido reproducir este problema en 3 computadoras, desafortunadamente son casi idénticas en términos de software instalado:

Windows 7 Ultmate SP1 (ruso, todas las actualizaciones instaladas) con MSVS2012 (inglés / rusian) Actualización 1Windows 8 (en máquina virtual)

Actualmente estoy pensando en parchar algunas clases de .NET (SystemParameters por ejemplo), que llamanGetSystemMetrics() utilizando la reflexión, pero no estoy seguro de cómo obtener los valores métricos correctos.

Preguntas:

¿Me estoy perdiendo de algo? Como puedeGetSystemMetrics() ser afectado por el marco de destino?¿Hay alguna manera de llamarGetSystemMetrics() ¿Desde la aplicación .NET 4.5 y obtienes resultados correctos?

Estoy abierto a cualquier sugerencia para solucionar este problema. Además, si no puede reproducir el problema, deje una breve descripción del sistema en los comentarios.

Respuestas a la pregunta(2)

Su respuesta a la pregunta