Die ShowWindow-Funktion funktioniert nicht, wenn die Zielanwendung als Administrator ausgeführt wird

Ich schreibe ein Programm, das das Fenster einer Zielanwendung anzeigt / verbirgt. Ich habe es früher ausprobiert und etwas Merkwürdiges bemerkt. Wenn ich die Zielanwendung als Administrator ausführe (Rechtsklick-> Eigenschaften, Registerkarte "Kompatibilität", "Dieses Programm als Administrator ausführen"), funktioniert es nicht.

Um zu demonstrieren, habe ich eine einfache GUI-App namens "TargetApplication" geschrieben und dann den folgenden Code geschrieben, um das Ein- und Ausblenden dieser Anwendung zu testen:

class Program
{
  static void Main(string[] args)
  {
    IntPtr windowPtr = FindWindow(null, "TargetApplication");
    ShowWindow(windowPtr, 0); // 0 = Hide            
    Console.WriteLine("The window is now hidden. Press Enter to restore");
    Console.ReadLine();
    ShowWindow(windowPtr, 9); // 9 = Restore
    Console.WriteLine("The window is now restored. Press Enter to exit.");            
    Console.ReadLine();
  }

  [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
  static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

  [DllImport("user32.dll")]
  static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}

Wenn ich die Anwendung mit Fenster ohne Administratorrechte starte, funktioniert sie nicht.

Würde es jemandem etwas ausmachen, das für mich zu testen? Ich habe die .exe für beide Anwendungen hier hochgeladen:

TestShowWindow herunterladen

Sie müssen sie nur herunterladen und TestApplication.exe und dann TestShowWindow.exe ausführen. Wenn Sie TestApplication.exe so ändern, dass es als Administrator ausgeführt wird, funktioniert ShowWindow nicht mehr.

Wenn Sie dem Herunterladen meiner Inhalte nicht vertrauen, können Sie meinen Code natürlich jederzeit kompilieren und auf jeder Zielanwendung in Windows testen, deren Kompatibilitätsmodus Sie ändern können.

P.S. Ich bin nicht sicher, ob es einen Unterschied macht, aber ich verwende Windows 8 Pro. 64-Bit.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage