2

サーバー名、ポート、パスワードなどの情報を含む .resx ファイルが埋め込まれたインストーラー アプリがあります。顧客ごとにこのインストーラーを生成する必要があります (このプロセスは自動化されており、当社の Web サイトを通じて行われます)。逆アセンブラーにildasmを使用し、resx ファイルを置き換えてから、ilasm を使用て .exe を再度作成します。しかし、このプロセスの後、.exe はアイコンを失い、デフォルトのアイコンをその場所に置きました。

デフォルトのアイコンを変更する方法が見つかりません。

ありがとう

4

1 に答える 1

4

C# プログラムのかなりあいまいな詳細を見逃しています。コンパイラが生成する実行可能ファイルには、アンマネージリソースも含まれます。Windows はマネージド リソースについて何も認識しないため、必須です。これは、Visual Studio で確認できるものです。File + Open + File を使用して、C# コンパイラによって生成された .exe を選択します。RTM エディションが必要です。Express では機能しません。

プログラムに少なくとも 3 つのノードが表示されます。

  • RT_MANIFEST には、実行可能ファイルのマニフェストが含まれています。 それ以降の Windows バージョンでは非常に重要で、UAC と互換性のあるプログラムを宣言します。これにより、保護されたディレクトリにファイルを書き込もうとしたり、HKLM でレジストリ キーを作成しようとしたりするなど、 UACの禁止事項を実行するときに嘘をつく必要がある以前の Windows プログラムのように Windows がプログラムを処理するのを防ぎます。マニフェストのコンテンツは、ほとんどのプログラムで既定のものです。「アプリケーション マニフェスト ファイル」プロジェクト項目テンプレートを使用してカスタム コンテンツを取得できます。

  • 「バージョン」には、実行可能ファイルのバージョン リソースが含まれます。これには、Windows エクスプローラーで実行可能ファイルのプロパティを表示したときに表示される情報が含まれています。そのコンテンツは、AssemblyInfo.cs ソース コード ファイルの [assembly:] 属性から自動生成されます。

  • 「アイコン」には、プログラムのアイコン リソースが含まれます。あなたがもう持っていないもの。

これらのアンマネージ リソースをパッチ適用済みの実行可能ファイルに埋め込むには、ilasm.exe の /resource オプションを使用する必要があります。これには、Windows SDK ツール rc.exe によって生成されるアンマネージ リソースのコンパイル済みバージョンである .res ファイルが必要です。これが [プロジェクト + プロパティ] の [アプリケーション] タブの [リソース ファイル] ラジオ ボタンでも公開されていることに注意してください。

この要件を無視することはできません。特にインストーラー プログラムでは、アイコン リソースがなくてもマニフェストはなくても問題ありません。ildasm.exe が逆コンパイルをサポートしていないことは確かです。Resource Hacker のようなツールでそれができない場合は、プログラム用の .res ファイルを作成する必要があります。または、ildasm.exe を使用してやりたいことを実行する知恵を確認してください。

于 2013-06-20T12:20:56.227 に答える