Gilt der Kompatibilitätsmodus für eine EXE-Datei unabhängig davon, wie sie ausgeführt wird? (Wie kann ich das überprüfen?)

415
TNT

Wenn Sie den Kompatibilitätsmodus auf eine ausführbare Datei setzen (wie in den Antworten auf diese Frage beschrieben ), wird dies in jedem Kontext angewendet - sei es vom Explorer, von einer Verknüpfung oder von einem Cmd- oder Powershell-Skript ausgeführt oder direkt in einem von aufgerufen Letzteres?

Oder wie kann ich überprüfen, ob der eingestellte Kompatibilitätsmodus in den verschiedenen oben genannten Kontexten wirksam ist (ohne selbst erstellten c / c ++ - Code zu kompilieren)?

0
Als Teil eines Prozesses, der unter Windows erstellt wird, werden eine Reihe allgemeiner Initialisierungsschritte ausgeführt, unabhängig davon, wie der Prozess erstellt wird. Eine davon prüft Shims und Kompatibilitätseinstellungen unter \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers. Andere umfassen das Lesen von Image File Execution Paths, AppInit_dlls, in die User32.dll geladen ist usw. Wenn Sie den Prozessmonitor verwenden, werden alle diese Schlüssel beim Start des Prozesses gelesen. HelpingHand vor 5 Jahren 3
@HelpingHand: Warum schreibst du das nicht als Antwort? harrymc vor 5 Jahren 0
Ich denke, die Beobachtung der Registry beim Start eines Prozesses ist eine Sache. Die Überprüfung, ob ein Prozess nach dem Start über Vergleichbarkeitsoptionen verfügt, ist eine andere. Ich bin sicher, dass Sie diese Informationen vom Prozessumgebungsblock (Process Environment Block, PEB) des Prozesses erhalten können, wenn Sie wissen, was die Werte bedeuten. AppCompatFlags, AppCompatFlagsUser? Ich glaube nicht, dass dies eine vollständige Antwort ist. HelpingHand vor 5 Jahren 0

0 Antworten auf die Frage