Was bedeutet es, Windows zu ermöglichen, externe Manifeste zu priorisieren?

2

Einige Anwendungen lassen sich auf hochauflösenden Bildschirmen nicht gut skalieren. Eine vorgeschlagene Lösung für dieses Problem unter Windows (z. B. für Adobe CS6-Anwendungen ) besteht darin, bei einer Registrierungsänderung die Priorisierung externer Manifeste durch Windows zu aktivieren und anschließend ein Manifest für die Anwendung zu erstellen, mit dem Windows angewiesen wird, die Standard-UI-Skalierung anzuwenden.

Ich bin fest davon überzeugt, dass Änderungen auf Systemebene, wie z. B. Änderungen an der Registrierung, nicht vorgenommen werden, ohne dass ich zuerst verstehe, was sie bedeuten. Ich habe versucht, Windows in die Lage zu versetzen, externe Manifeste zu priorisieren, um mehr zu erfahren. Ich finde jedoch nur Beispiele für diesen Hack, mit dem verschiedene hartnäckige Anwendungen auf hochauflösenden Bildschirmen skaliert werden können.

Ich glaube, dass diese Registrierungsänderung im Wesentlichen ermöglicht, dass eine bestimmte Art von Konfigurationsdatei ( .manifest) gelesen wird, wenn Anwendungen gestartet werden (?). Ich würde gerne verstehen, welche Auswirkungen es hat, sie zu aktivieren. Der vielversprechende, aber weit weniger als maßgebliche Kommentar in Adobe-Foren kommt meiner Recherche am nächsten . Ich würde gerne wissen, ob dies zutrifft oder nicht:

Sofern sich andere Auswirkungen auf die Registrierung ändern, scheint es sich um eine Änderung zu handeln, sofern Sie nicht über andere .manifest-Dateien zusammen mit Ihren ausführbaren Dateien verfügen, die mit denen in den ausführbaren Dateien selbst in Konflikt stehen - was sehr ungewöhnlich sein sollte kleiner Nachteil.

Insbesondere (in der Reihenfolge):

  1. Stimmt es, dass diese Registrierungsänderung kein Systemverhalten beeinflusst, außer in Fällen, in denen ich manuell eine Manifestdatei für eine Anwendung erstelle? Dieser Artikel lässt mich denken, dass dies der Fall ist . Oder hat es andere Auswirkungen (z. B. ist das Überprüfen auf Manifeste häufig genug, um bestimmte Systemprozesse zu verlangsamen?)
  2. Offensichtlich besteht die Gefahr, dass ein schlecht konfiguriertes Manifest eine Anwendung beschädigt. Gibt es weitere Risiken, wie zum Beispiel Sicherheitsbedenken (Malware, die Manifeste erzeugt?), Die ein Endbenutzer kennen muss, bevor er sie aktiviert?
  3. Dieser MSDN-Artikel besagt, dass Manifeste vorhanden sind, um anwendungsspezifische Registrierungsüberschreibungen zuzulassen. Ist das eine korrekte Interpretation in Laienbegriffen?

Wenn die Windows-Version relevant ist, interessieren mich am meisten Windows 8.1 und Windows 7 (in dieser Reihenfolge).

user568458
quelle

Antworten:

4

Manifestdateien enthalten Einstellungen für Windows zur Behandlung des Moduls beim Start. Wie Sie bereits herausgefunden haben, kann es in das Modul selbst eingebettet werden oder als * .manifest-Datei außerhalb bleiben. Normalerweise hat die eingebettete Priorität, so dass die externe nicht zählt, wenn das Modul bereits eine eingebettete hat. Die Registrierungseinstellung ändert dieses Verhalten, um zuerst externe zu zählen.

  1. Ich glaube nicht, dass das Priorisieren externer Manifeste die Systemleistung verlangsamt. Die meisten Prozesse werden normal ausgeführt, nachdem überprüft wurde, dass kein externer Prozess vorhanden ist. Auch wenn dies der Fall ist, handelt es sich bei Manifest-Dateien um kleine XML-Dateien, sodass die Verarbeitung nicht viel Zeit in Anspruch nimmt.

  2. Es gab einige Fälle, wie Sie sagten. Beispiel: http://www.symantec.com/security_response/vulnerability.jsp?bid=21550 Aus Sicherheitsgründen ist es meines Erachtens sicherer, externe Manifeste überhaupt nicht zu priorisieren, auch wenn unter Windows keine Probleme vorliegen.

  3. Der Artikel sagte, dass das gleiche Ziel mit Registry in der Vergangenheit erreicht wurde. Jetzt ist es anders, weil Module interne Manifeste haben können. Darüber hinaus können Manifeste nicht als allgemeine Registrierungsvirtualisierung verwendet werden.

Tatsächlich gibt es eine Möglichkeit, das "interne" Manifest zu ändern. Dieser Artikel beschreibt, wie das auf eigenes Risiko getan wird. http://csi-windows.com/toolkit/240-great-pe-editor-for-internal-manifests

Ich habe diesen Trick mit einer von mir entwickelten App getestet und gut funktioniert. Beachten Sie, dass Sie mit dem "Entwicklermodus" beginnen sollten, um die Exe zu speichern, das vorhandene Manifest entfernen und dann ein neues Manifest hinzufügen müssen. Ganz zu schweigen davon, vergessen Sie nicht, das Original zu sichern.

Wenn dieser Trick für Sie funktioniert, ist das viel besser, als die Priorität zu ändern. Kommerzielle Anwendungen funktionieren jedoch möglicherweise nicht, da auf diese Weise digitale Signaturen unterbrochen werden und ggf. Konflikte beim Schutz auftreten können. Wenn dies nicht funktioniert, sollten Sie den ursprünglichen Entwickler bitten, die internen Manifeste für neuere Windows-Versionen zu ändern oder neuere Softwareversionen zu finden, die möglicherweise das ursprüngliche Problem behoben haben.

Scott Rhee
quelle
Gute Antwort! Nur um zu verdeutlichen, wenn Sie "in das Modul selbst eingebettet" sagen, meinen Sie das innerhalb des Binär- / Maschinencodes innerhalb des .exeoder .dll? Vermutlich gäbe es rechtliche Probleme beim Basteln mit den internen Manifesten in so etwas wie einem teuren Adobe-Paket?
user568458
@ user568458 Ja, eingebettetes Manifest befindet sich in EXE-Dateien. Da es im Ressourcenbereich ist, können DLLs sie auch haben, aber ich weiß nicht über "Manifeste in DLL". Und Sie haben Recht, da das Ändern des internen Manifests möglicherweise die Lizenzvereinbarung verletzt, die Sie vor der Verwendung akzeptiert haben. Mit Ihrem Feedback scheint es Vorteile zu haben, die Priorität des Manifests zu ändern - es berührt keine Binärdatei. Vor- und Nachteile in jeder Hinsicht. Am sichersten ist es also, Hilfe vom ursprünglichen Entwickler zu erhalten.
Scott Rhee