webdevqa.jp.net

「Windowsが外部マニフェストに優先順位を付けることができるようにする」とはどういう意味ですか?

一部のアプリケーションは、高解像度の画面ではうまくスケールアップしません。 Windowsでこれに対して提案されている解決策の1つ(たとえば、 Adobe CS6アプリケーションの場合 )は、「Windowsが外部マニフェストに優先順位を付けることを有効にする」レジストリを変更してから、WindowsにデフォルトのUIスケーリングを適用するように指示するアプリケーションのマニフェストを作成します。

私は、レジストリの変更などのシステムレベルの変更を、最初にその意味を理解せずに行わないことを固く信じています。私は、Windowsが外部マニフェストに優先順位を付けて詳細を学習できるようにすることを研究しようとしましたが、私が見つけたのは、さまざまな頑固なアプリケーションを高解像度画面でスケーリングするために使用されているこのハックの例です。

このレジストリの変更により、基本的に特定の種類の設定ファイルが有効になると思います(.manifest)アプリケーションの起動時に読み取られます(?)。それらを有効にすることの意味を理解したいと思います。私の研究で答えに最も近いのはこれです アドビのフォーラムでの有望だが権威のないコメント 。私は本質的にこれが本当かどうか知りたいです:

レジストリの変更に対する他の影響に関しては、実行可能ファイル自体の内部のものと競合する実行可能ファイルと一緒に他の.manifestファイルがない限り、これは非常にまれですが、次のような変更のようです。少し欠点。

特に(順番に):

  1. このレジストリの変更は、アプリケーションのマニフェストファイルを手動で作成する場合を除いて、システムの動作に影響を与えないというのは本当ですか? この記事は私にこれが事実であると思わせます 。または、他の影響がありますか(たとえば、マニフェストのチェックは、特定のシステムプロセスを遅くするのに十分一般的ですか?)
  2. 明らかに、不適切に構成されたマニフェストが1つのアプリケーションを壊すリスクがあります。エンドユーザーがそれらを有効にする前に知っておく必要があるセキュリティ上の懸念(マルウェアがマニフェストを作成する)などのさらなるリスクはありますか?
  3. これ MSDNの記事 アプリケーション固有のレジストリオーバーライドを許可するマニフェストが存在すると言っているようです。素人の言葉で言えば、それは正しい解釈ですか?

Windowsのバージョンが関連している場合、私はWindows8.1とWindows7に(この順序で)最も興味があります。

マニフェストファイルには、起動時にモジュールを処理する方法に関するWindowsの設定が含まれています。すでに理解しているように、モジュール自体に埋め込むことも、*。manifestファイルとして外部に残すこともできます。通常、モジュールにすでに埋め込まれているものがある場合、外部のものはカウントされないように、埋め込まれたものが優先されます。レジストリ設定により、この動作が変更され、外部のものが最初にカウントされます。

  1. 外部マニフェストを優先すると、システムのパフォーマンスが低下するとは思わない。ほとんどのプロセスは、外部プロセスがないことを確認した後、通常どおり実行されます。存在する場合でも、マニフェストファイルは小さなxmlファイルであるため、処理にそれほど時間はかかりません。

  2. あなたが言ったようにいくつかのケースがありました。例: http://www.symantec.com/security_response/vulnerability.jsp?bid=2155 したがって、セキュリティ上の懸念から、外部マニフェストがない場合でも、優先順位を付けない方が安全だと思います。 Windowsで進行中の問題。

  3. 記事によると、過去にレジストリで同じ目標が達成されました。モジュールは内部マニフェストを持つことができるため、今では異なります。さらに、マニフェストを一般的なレジストリ仮想化として使用することはできません。

実際には、「内部」マニフェストを変更する方法があります。この記事では、自己責任でそれを行う方法を説明します。 http://csi-windows.com/toolkit/240-great-pe-editor-for-internal-manifests

私は自分で開発したアプリでこのトリックをテストし、問題なく動作しました。 exeを保存するには「開発者モード」から始めて、既存のマニフェストを削除してから、新しいマニフェストを再度追加する必要があることに注意してください。言うまでもなく、オリジナルをバックアップすることを忘れないでください。

このトリックがうまくいく場合は、優先度を変更するよりもはるかに優れています。ただし、商用アプリケーションは、この方法でデジタル署名が破損し、保護が存在する場合は競合する可能性があるため、機能しない可能性があります。それが機能しない場合、最善の方法は、元の開発者に新しいWindowsバージョンの内部マニフェストを変更するように依頼するか、元の問題を修正した可能性のある新しいバージョンのソフトウェアを見つけることです。

4
Scott Rhee