2013-01-09 9 views
7

ユーザーが勝利のためにC++でファイルやフォルダにアクセスしようとすると、パスワードウィンドウを表示するプログラムを書く必要がある& win 7(32ビットと64ビット)。 しかし、難しいのは、IAT \ EATやインラインフックをこのタスクに使用することができないことです。このプロジェクトでは、マイクロソフトがサポートしている少しの方法を使用する必要があります。APIのフックやフィルタドライバなしでI/Oを傍受する

これについては、ファイルシステムのフィルタドライバを使用してこれを行うことができますが、私はミニドライバからパスワードダイアログをどのように表示するのか不思議に思っています。

シェルの拡張機能でこのジョブを実行できますが、msdnのドキュメントではシェル拡張機能を使用してI/Oコールを傍受できないことがわかります。

事前に感謝してください。

+1

ユーザがDOSボックスを起動してコンソールコマンドを使用して自分が望むものを取得できないようにするにはどうすればよいですか? – selbie

+4

私はあなたがドライバーコンポーネントを書くのをやめますが、ドライバー自体はUIを表示しない可能性があります。しかし、ユーザーモードアプリ(アラートタスクトレイアプリ)と通信して、UIを起動してクレジットを収集することができます。 – selbie

答えて

4

これを達成するには、カーネルドライバが必要です。シェルフックと拡張機能は、ファイルがシェル経由でアクセスされた場合(Windowsエクスプローラでクリックされた場合)にのみ有効になり、他のプログラムからファイルに直接アクセスすると起動しません。

オンアクセスのウイルス対策に取り組んでいるときも同様の問題がありました。

@selbieのように、ドライバコード自体は対話型のプロンプトを処理できません。これを達成するにはユーザーモードのコードと通信する必要があります。それはスタンドアロンのアプリにすることも、DLLをすべてのプロセスに自動ロードすることもできます。私の場合、ユーザーの応答が必要な場合は、ドライバーとユーザーモードのアプリケーションがパイプ経由で通信していました。ドライバーはメッセージをユーザーモードのアプリケーションにパイプして応答します(応答があった場合)。アプリは、ドライバに迅速かつパイプで応答を返しました。

ファイルI/Oフッキングについては、in earlier thread hereを参照してください。

関連する問題