7

win XP および win 7 (32 ビットと 64 ビットの両方) で、ユーザーが c++ でファイルまたはフォルダーにアクセスしようとしたときに、パスワード ウィンドウを表示するプログラムを作成する必要があります。しかし難しいのは、このプロジェクトでは Microsoft がサポートする方法を少し使用する必要があるため、このタスクに IAT \ EAT またはインライン フックを使用できないことです。

これについてグーグルで検索しているときに、多くのフォーラムで、ファイル システム フィルター ドライバーを使用してこれを実現できることも言及されていましたが、ミニ ドライバーからパスワード ダイアログを表示する方法を知りたいです。

シェル拡張機能でこの仕事ができると思いますが、msdn のドキュメントには、シェル拡張機能を使用して I/O 呼び出しをインターセプトできないことが示されています。

アドバイスをください、事前に感謝します。

4

1 に答える 1

4

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

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

しかし、@selbie が言ったように、ドライバー コード自体は対話型プロンプトを処理できません。それを実現するには、ユーザー モード コードと通信する必要があります。これは、スタンドアロン アプリでも、すべてのプロセスに自動ロードされる DLL でもかまいません。私の場合、ユーザーの応答が必要な場合は、ドライバーとユーザー モード アプリがパイプ経由で通信するようにしました。ドライバーはメッセージをユーザー モード アプリにパイプし (アクティブな場合)、応答を待ちます。アプリはプロンプトを発行し、ドライバーにパイプで応答を返しました。

ファイル I/O フックの件名は、こちらの以前のスレッドでも議論されました。

于 2013-01-15T19:19:34.517 に答える