Greetings all、特定のアプリケーションでC#Dllが読み込まれないようにする
私はC#で書かれたシェルツールバー拡張を持っています。これはWindowsエクスプローラでのみ使用することを目的としているため、Internet ExplorerにDLLがロードされないようにしたいと考えています。 Windowsは、Internet Explorerのみで拡張機能をロードする方法がたくさんありますが、エクスプローラのみを実行する方法は一見ありません。私はDLLがロードされた後、私は別の場所で実行できる様々なチェックがあることを知っていますが、理想的には、DLLがまったくロードされないようにすることです。
ここで、C++と書かれていた場合は、DllMain
にGetModuleFileName
を呼び出し、実行可能ファイルがiexplore.exe
であるかどうかを確認し、そうであればfalseを返します。しかし、C#にはDllMain
がありません。マイクロソフトでは、ローダーロックでうまくいくとは信じていません。選択的にC#DLLの読み込みを防ぐことができる他の方法はありますか?
該当なし...アドバイスが与えられた理由は、.NETでシェル拡張を実行すると、シェルダイアログを使用する管理対象外のプログラムでCLR注入問題が発生する可能性があるためです。異なるCLRバージョンで書かれた拡張機能は、互いに衝突する可能性があります。しかしこれは、コンテキストメニューハンドラやシェルダイアログで使用できるその他の拡張機能のようなものにのみ関係します。ツールバーは、WindowsエクスプローラとInternet Explorerという2つのアプリケーションによってのみロードされます。それだけでなく、.NETは複数のCLRバージョンのメモリ内でのサイドバイサイド操作をサポートしています。これは今では時代遅れです。 –
私はそれが古くなったことを認識していませんでした。ありがとうございました – Arjang