3

「asInvoker」を含むマニフェストをアプリに追加したことを覚えていなくても、UAC が有効になっている Vista タスク マネージャーによると、仮想化が「無効」で実行される WinForms .NET アプリがあります。VS.NET (このプロジェクトは VS.NET の 4 つのバージョンすべてを使用しています)は、ソリューション エクスプローラーに表示される\Properties\app.manifestファイルを追加している必要がありますが、このファイルには、仮想化を無効にすることが期待されるtrustinfo要素が含まれていません。 . そのため、実際の実行可能ファイルに何が埋め込まれているかを確認するために Reflector を起動しましたが、app.manifest ファイルが見つかりません。実行可能ファイルでマニフェストまたはその兆候を見つけることができるはずですか? VS 2008 によると、ビルド アクションはBaseApplicationManifest です。、しかし、これは実行可能ファイルに埋め込まれていないということですか? 仮想化を無効にした状態でアプリが実行される理由を誰かに説明してもらえますか? また、説明したら、Reflector を介してアプリでこれを引き起こすアーティファクトを見つける場所を教えてもらえますか?

私のソリューションにある app.manifest のフォローアップとして、誰がどれくらいの期間知っているかを知っていますが、これ以上必要かどうかわからないあらゆる種類の IPermissions でいっぱいです。このファイルにコンテンツを追加するのは何ですか? また、不要になったアクセス許可を含めることができますか? 剪定または管理する必要がありますか?trustinfo を明示的に追加する必要がありますか? app.manifest は謎に過ぎず、もっと学ぶ必要があると思います。

更新:この記事から、SysInternals/Microsoft Sigcheck ユーティリティを使用して次の情報を確認できることを知りましたが、アプリが MyApplication.app で署名された方法がわかりません。これはビルド プロセスのどこで発生していますか?

c:\Users\Public\Programs\SysinternalsSuite>sigcheck.exe -m ceo.exe

sigcheck v1.54 - sigcheck
Copyright (C) 2004-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

"c:\Users\Public\Programs\SysinternalsSuite\ceo.exe":
        Verified:       Unsigned
        File date:      1:47 PM 2/6/2009
        Publisher:      CEO Image Systems
        Description:    Main Menu
        Product:        Image Executive CEO
        Version:        2.0.0.0
        File version:   2.0.0.0
        Manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

更新 2:最終的にそこに到達するようです。VS 2008 では、実行可能ファイルのプロジェクト ページに [マニフェスト] オプションが追加されました。このプロジェクトでは、[既定の設定でマニフェストを埋め込む] が選択されています。これはどのようにしてそこにたどり着いたかという答えですが、Reflector でこれを確認するにはどうすればよいでしょうか?

4

2 に答える 2

9

Reflector では、管理されていないリソースを表示できません。特別なツールは必要ありません。Visual Studio の [ファイル] + [開く] + [ファイル] を使用し、.exe を選択してリソースを参照するだけです。マニフェストには、RT_MANIFEST ノードからアクセスできます。ビューアーはあまりフレンドリーではなく、16 進ダンプが表示されます。コンテキスト メニューを使用して、テキスト ファイルにエクスポートできます。

C# および VB.NET コンパイラは、Vista 互換のマニフェストを自動的に生成します。これは、/win32manifest コマンド ライン オプションでオーバーライドできます。Project + Add New Item + Application Manifest Fileを使用すると、IDEが自動的に行うことです。

于 2009-02-09T19:30:58.637 に答える
3

おそらくそれは win32 リソースであるため、Reflector からは見えないのでしょうか? このような win32 リソース エディターで win32 リソースを表示できます。

于 2009-02-08T17:02:36.440 に答える