2010-11-27 10 views
1

Greetings all、特定のアプリケーションでC#Dllが読み込まれないようにする

私はC#で書かれたシェルツールバー拡張を持っています。これはWindowsエクスプローラでのみ使用することを目的としているため、Internet ExplorerにDLLがロードされないようにしたいと考えています。 Windowsは、Internet Explorerのみで拡張機能をロードする方法がたくさんありますが、エクスプローラのみを実行する方法は一見ありません。私はDLLがロードされた後、私は別の場所で実行できる様々なチェックがあることを知っていますが、理想的には、DLLがまったくロードされないようにすることです。

ここで、C++と書かれていた場合は、DllMainGetModuleFileNameを呼び出し、実行可能ファイルがiexplore.exeであるかどうかを確認し、そうであればfalseを返します。しかし、C#にはDllMainがありません。マイクロソフトでは、ローダーロックでうまくいくとは信じていません。選択的にC#DLLの読み込みを防ぐことができる他の方法はありますか?

答えて

0

シェル拡張ハンドラをしないでください.NETで http://blogs.msdn.com/b/junfeng/archive/2005/11/18/494572.aspx

+0

該当なし...アドバイスが与えられた理由は、.NETでシェル拡張を実行すると、シェルダイアログを使用する管理対象外のプログラムでCLR注入問題が発生する可能性があるためです。異なるCLRバージョンで書かれた拡張機能は、互いに衝突する可能性があります。しかしこれは、コンテキストメニューハンドラやシェルダイアログで使用できるその他の拡張機能のようなものにのみ関係します。ツールバーは、WindowsエクスプローラとInternet Explorerという2つのアプリケーションによってのみロードされます。それだけでなく、.NETは複数のCLRバージョンのメモリ内でのサイドバイサイド操作をサポートしています。これは今では時代遅れです。 –

+0

私はそれが古くなったことを認識していませんでした。ありがとうございました – Arjang

0

セクション3:登録私たちのアプリケーションバー私は、新しいユーザーがに許可されていないとして、別の記事で、このいずれかを送信する必要がありました http://www.codeproject.com/KB/shell/csdoesshell3.aspx?print=true

1つの投稿に複数のリンクを送信する

+0

あなたが提供したリンクは、エクスプローラのツールバー(正式にはDeskBandsと呼ばれています)とはまったく異なるAppBarsを扱っています。 AppBarsはIEではなくエクスプローラでのみロードされるので、私の問題に実際には関係ありません。 –

+0

Paulに感謝します。エクスプローラツールバーを登録するオートランを使用して関連するレジストリキーを見つけることができますか? Windowsエクスプローラですが、運がまだありません。エクスプローラ専用のエクスプローラツールバーをレジストリに登録する方法はありません。 – Arjang

関連する問題