DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■35476 / inTopicNo.1)  ファイルとして配置したマニフェストを優先したい
  
□投稿者/ ぺんたごん 一般人(6回)-(2023/07/20(Thu) 16:15:00)
  • アイコン環境/言語:[Windows 10 .NET 4.6.2] 
    分類:[.NET] 

    ごぶさたしてます。

    タイトル通りなんですが、経緯としては
    他社製ゆえにバイナリをいじれないWinForms使ったexeがあり、
    こちらはプラグインとしてアセンブリdllを作ってる状況です。

    このdllでもWinFormsで画面を出すようになってますが、
    そこにはWPF製のコントロールを配置してます。
    高DPI環境で動かすと、この画面が表示されるタイミングで
    親(exe)も子(dll)もフォームサイズが急に小さくなります。
    exeが高DPI対応してない(文字がぼやけてる)からだと思いますが、
    似た構成の実験exe+実験dllでも同じ現象となりました。

    (実験exeで)埋め込みマニフェストのdpiAwareをtrueにすると
    当然正しく動きますが、そうではない状態で
    diAwareをtrueにした〇〇.exe.manifestを
    exeと同じ場所に配置しても効いていない状態です。

    既にexeにマニフェストが埋め込まれている場合は外部マニフェストファイルは無視されるようですが、
    exeをいじらずにファイルの方を優先させる手段はあるのでしょうか。
    あるいは、exeのマニフェストを(リビルドせずバイナリ操作で)差し替えるツールなどはあるのでしょうか。

    ※exeのファイルプロパティの互換性タブで高DPI対応できるのは知ってますが、
     セットアップ端末全てで実施が必要なので最終手段です

    よろしくおねがいします。
マルチポストを報告
違反を報告
引用返信 削除キー/
■35477 / inTopicNo.2)  Re[1]: ファイルとして配置したマニフェストを優先したい
□投稿者/ 魔界の仮面弁士 大御所(1557回)-(2023/07/20(Thu) 17:36:48)
  • アイコンNo35476に返信(ぺんたごんさんの記事)
    > exeのマニフェストを(リビルドせずバイナリ操作で)差し替えるツールなどはあるのでしょうか。

    Visual Studio の [ファイル]-[開く]-[ファイル] メニューで
    exe を開けば、RT_MANIFEST を直接改竄できます。


    ただし電子署名付の実行ファイルの場合は注意が必要です。

    改竄行為によって、署名検証を通過しなくなるためです(たとえば下記)。
     signtool verify /pa /v X:\target.exe
    その場合、無効な署名のままで放置するのか、それとも
    自前でコードサイニングを埋め直すか…という判断になるかと思います。
違反を報告
引用返信 削除キー/
■35478 / inTopicNo.3)  Re[2]: ファイルとして配置したマニフェストを優先したい
□投稿者/ ぺんたごん 一般人(7回)-(2023/07/21(Fri) 12:08:10)
  • アイコンNo35477に返信(魔界の仮面弁士さんの記事)
    ありがとうございます。
    exe改変も最終手段としておきます
    ※実際には私はWPFコントロール部品しか作っておらず、
     このdllを作ってるのはさらに別チームで、今回の現象を
     相談されてるだけなのでexeの詳細を知らない状態です

    あと調べていたらVista以降は埋め込まれたマニフェストが優先されるようですね…
    回避手段はなさそう

違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -