C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ファイルを開いたときのイベントを検知


(過去ログ 59 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■33419 / inTopicNo.1)  ファイルを開いたときのイベントを検知
  
□投稿者/ こぶ茶 (1回)-(2009/02/27(Fri) 18:14:14)

分類:[C#] 


ある特定のファイルだけでなく、ウィンドウズ上にある全てのファイル[text,wordなどなど]を対象として、
ユーザがファイルを開いたタイミングでC#のフォームのテキストエリアに開いたファイル名を書き込むとい
ったことは可能なのでしょうか?

簡単に言うと、
ファイルを開いたときにウィンドウズのAPIで"何々のファイルが開いた"というイベントを
検知することは可能でしょうか?

なにか方法がありましたらご教授お願いします。
引用返信 編集キー/
■33436 / inTopicNo.2)  Re[1]: ファイルを開いたときのイベントを検知
□投稿者/ ちゃっぴ (219回)-(2009/02/27(Fri) 22:04:04)
ちゃっぴ さんの Web サイト
ぶっちゃけた話、Windows で file への更新を trigger にした処理を行うこと自体が問題だと思っています。というのは、確実性を求めるのであれば driver level の hook が必要になると思いますから。それから確実性の問題はさておき、処理性能においてもそれなりのツケを払わせられることになります。

多くの場合、適切な設計を行うことによって proxy pattern を利用することで、多くの場合より効率的な手法に変更することが可能です。
引用返信 編集キー/
■33438 / inTopicNo.3)  Re[2]: ファイルを開いたときのイベントを検知
□投稿者/ こぶ茶 (2回)-(2009/02/27(Fri) 22:54:33)
No33436 (ちゃっぴ さん) に返信
> ぶっちゃけた話、Windows で file への更新を trigger にした処理を行うこと自体が問題だと思っています。というのは、確実性を求めるのであれば driver level の hook が必要になると思いますから。それから確実性の問題はさておき、処理性能においてもそれなりのツケを払わせられることになります。
>
> 多くの場合、適切な設計を行うことによって proxy pattern を利用することで、多くの場合より効率的な手法に変更することが可能です。

ご返答ありがとうございます。
FileSystemWatcherでファイルの変更通知を取得できるので、似たような感じでファイルが開いたときもイベントを
受け取れるというものがあると思っていました。
今回限られた環境下で動作させるため、残念ながらproxy patternの利用ができない状況にあります。
仮にシステムフックで行うとすればどのような作るのが理想でしょうか。

引用返信 編集キー/
■33440 / inTopicNo.4)  Re[3]: ファイルを開いたときのイベントを検知
□投稿者/ aetos (107回)-(2009/02/27(Fri) 23:25:45)
aetos さんの Web サイト
No33438 (こぶ茶 さん) に返信
> 仮にシステムフックで行うとすればどのような作るのが理想でしょうか。

一般に Windows プログラミングで「システムフック」というと、SetWindowsHookEx 関数を使ったものを指しますが、この関数ではファイルを開いたことは検知できません。
ちゃっぴさんの言うフックはフィルタドライバというやつを仕込む手法です。
もちろん C# では作れませんし、C++ で作ろうにも、普通のプログラミングとはいろいろと勝手が違います。
詳しく知りたければ、デバイスドライバ関連の本を読んでみるとよいでしょう。
ちょっとミスればすぐにブルースクリーンになったり、ファイルを開けなくなったりしそうです。
あと、64bit Vista からは、署名がないとインストールできなくなってるので、個人でのドライバ開発はそろそろ限界かもしれません。
引用返信 編集キー/
■33441 / inTopicNo.5)  Re[4]: ファイルを開いたときのイベントを検知
□投稿者/ aetos (108回)-(2009/02/27(Fri) 23:33:53)
aetos さんの Web サイト
No33440 (aetos さん) に返信

http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi?print+200902/09020003.txt
引用返信 編集キー/
■33443 / inTopicNo.6)  Re[1]: ファイルを開いたときのイベントを検知
□投稿者/ オショウ (102回)-(2009/02/28(Sat) 01:26:25)
マルチにはうんざりですが・・・

http://wareseeker.com/Software-Development/callback-file-system-2.1.zip/7c1f3cc36

こんなものもあります。

カーネルモードドライバーですネ!
やはりあるところにはあるんですネ!〜

ちょっと感心・・・

以上。
引用返信 編集キー/
■33444 / inTopicNo.7)  Re[2]: ファイルを開いたときのイベントを検知
□投稿者/ オショウ (103回)-(2009/02/28(Sat) 01:37:30)
追伸(情報と言うことで)

この話題、ぐぐったら僅か数分で結構ヒットします

http://technet.microsoft.com/ja-jp/sysinternals/bb896642(en-us).aspx

こんなところにもあったのですネ〜

以上。
引用返信 編集キー/
■33559 / inTopicNo.8)  Re[3]: ファイルを開いたときのイベントを検知
□投稿者/ こぶ茶 (3回)-(2009/03/04(Wed) 12:40:19)

掲示板初心者なので"マルチポスト"が分からなくて
マルチになっていたことすみませんでした。

それと遅れましたが、皆さんご回答ありがとうございました。

以上です。

引用返信 編集キー/
■33561 / inTopicNo.9)  Re[2]: ファイルを開いたときのイベントを検知
□投稿者/ れい (837回)-(2009/03/04(Wed) 13:41:08)
2009/03/04(Wed) 13:45:22 編集(投稿者)

No33443 (オショウ さん) に返信
> マルチにはうんざりですが・・・
>
> http://wareseeker.com/Software-Development/callback-file-system-2.1.zip/7c1f3cc36
>
> こんなものもあります。
>
> カーネルモードドライバーですネ!
> やはりあるところにはあるんですネ!〜
>
> ちょっと感心・・・
>
> 以上。

これはFSをユーザーモードで実装するためのドライバで、FUSEやDokanと同様のものです。
いまの問題は解決できません。

ファイルのオープンを検知するなら
File System Filter DriverやMinifilter Driverを使うのが楽です。
市販のウィルス対策ソフトなどもコレを用いているようです。

ただし、カーネルモードでの動作になるので、
ドライバに署名するか、デバッグモードでの使用になります。

裏技として、FileMonなどの署名済みドライバを組み込んで使うという技があります。
ProcessMonitorでもできるかもしれません。

#って、aetosさんが既に書いてましたね。
#ドライバ署名用の証明書は(少なくともGlobalSignで)購入可能です。
#年間5万円くらいなので…やる気があれば可能ですね。個人でも。

引用返信 編集キー/
■33565 / inTopicNo.10)  Re[3]: ファイルを開いたときのイベントを検知
□投稿者/ aetos (109回)-(2009/03/04(Wed) 16:05:03)
aetos さんの Web サイト
No33561 (れい さん) に返信
> 裏技として、FileMonなどの署名済みドライバを組み込んで使うという技があります。
> ProcessMonitorでもできるかもしれません。

SysInternals を Microsoft が吸収したのは、身内にすることで Microsoft 名義の証明書を発行するためだったのかなーと思っています。

> #ドライバ署名用の証明書は(少なくともGlobalSignで)購入可能です。
> #年間5万円くらいなので…やる気があれば可能ですね。個人でも。

個人じゃ無理です。

> Note that Individuals, Sole Traders and unregistered organisations are NOT eligible for ObjectSign certificates.
http://www.globalsign.com/developer/code-signing-certificate/how_do_i_buy.html

http://crystaldew.info/2008/07/22/%e3%83%87%e3%82%b8%e3%82%bf%e3%83%ab%e7%bd%b2%e5%90%8d%e3%81%af%e3%82%82%e3%81%86%e5%8f%96%e3%82%8c%e3%81%aa%e3%81%84/
引用返信 編集キー/
■33576 / inTopicNo.11)  Re[4]: ファイルを開いたときのイベントを検知
□投稿者/ れい (838回)-(2009/03/04(Wed) 20:33:36)
No33565 (aetos さん) に返信
> 個人じゃ無理です。
>
>>Note that Individuals, Sole Traders and unregistered organisations are NOT eligible for ObjectSign certificates.
> http://www.globalsign.com/developer/code-signing-certificate/how_do_i_buy.html
>
> http://crystaldew.info/2008/07/22/%e3%83%87%e3%82%b8%e3%82%bf%e3%83%ab%e7%bd%b2%e5%90%8d%e3%81%af%e3%82%82%e3%81%86%e5%8f%96%e3%82%8c%e3%81%aa%e3%81%84/

なんと。
それじゃ私が今持ってる証明書は期限がきたらおしまいってことかしら。
そんな連絡きてないのだけども。

わざわざglobalsign本社まで足を運んで取得したのに…。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -