Wie kann ich den Kompatibilitätsmodus für eine ausführbare Datei über die Befehlszeile festlegen?

Gibt es eine Möglichkeit, die kompatibilität mit XP Option (rechtsklick/Eigenschaften / Kompatibilität ... das eine, ja:) zu einer ausführbaren Datei von der Kommandozeile?

Oder noch besser, gibt es eine Möglichkeit, die Kompatibilität auf ein ganzes Verzeichnis (ausführbare Dateien im Verzeichnis) festzulegen, sodass jede ausführbare Datei, die kompiliert/erstellt wird, bereits dieses "Flag" enthält?

Author: Rook, 2012-01-13

3 answers

Ich kenne keine Tools, mit denen die Anwendungskompatibilitäts-Flags gesetzt oder geändert werden können.

Die anwendungskompatiblen Flags werden jedoch in der Registrierung (Benutzer-oder Systemteil) gespeichert:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Daher können Sie den standardmäßigen Befehlszeilenregistrierungseditor zum Erstellen des erforderlichen Eintrags verwenden:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"

Weitere Informationen zu den verfügbaren Flags finden Sie im Blogbeitrag , in dem eine Anwendung als Administrator oder im Kompatibilitätsmodus ausgeführt wird.

 32
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-01-17 13:54:22

In einer Batch-Datei verwenden Sie:

> set __COMPAT_LAYER=WinXP

Vor .exe Aufruf

Unter:

 18
Author: user285687,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-12 11:28:28

Roberts Antwort war genau richtig. Um es ein wenig zu erweitern und die Frage des OPS zum Einstellen des Modus en masse zu beantworten...

Wenn Sie einen Ordner voll haben .exe-Dateien zu verarbeiten, können Sie dies tun:

for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"

Dieses Beispiel verwendet HKCU anstelle von HKLM; Achten Sie darauf, die auszuwählen, die Sie wirklich wollen.

Um die Einstellungen zu entfernen, mit einer Bestätigungsaufforderung für jeden:

for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"

Fügen Sie am Ende /f hinzu, wenn Sie nicht zur Bestätigung aufgefordert werden möchten.

(Wenn Sie wählen diese Antwort auf, bitte stimmen Sie auch Robert ' s ab!)

 11
Author: Mike Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-22 23:58:54