また追記です。
長期 = 1日(8時間以上)のことです。
#1・2時間程度ならいいと思います。
何をやりたいのかよく分かりませんが
「デスクトップ」はあくまでC:\Documents and Settings\ユーザ名配下にある
ディレクトリに過ぎません。
また「マイ コンピュータ」も仮想フォルダに過ぎず
ファイルシステムディレクトリも割り当てられていないため対象にすることはできません。
すべてのドライブを監査対象にするのであれば
GetLogicalDriveStrings 等を使って全部のドライブを列挙するしかないかと。
※リムーバブルディスク等を含めるのであれば相当面倒なことになるはず……
# どうでもいいけど CodeProject のサンプルプログラムを使用すると
# セキュリティポリシーでオブジェクト アクセスの監査を設定したときと同じような
# 感じになるな……
# 手元の PC(Windows 2000) だとフォルダの自動更新が行われなくなるorz
レスありがとうございます。
> USB利用したドライブ(メモリー等も含む)のように取り外し自由なドライブには
> どう対応しますか?
はい。それも質問しているつもりです。
> 監視がスムーズでなくなりますが、周期的に繋がっているドライブを調べながら
> 順次監視していくのがいいと思います。
リムーバルディスクが抜き差しされたときの通知は別のAPIにて得ることができます。
ただ、にさんにアドバイスをいただいたように、
ReadDirectoryChangesWを使って
リムーバブルディスクを監視していると安全な取り外しができません。
また、普通のディレクトリなどを監視の対象にすると、
削除することもできなくなってしまいます。
ということで、ReadDirectoryChangesWは
削除不可能なディレクトリのみにしか使わないようにしようと思います。
基本的には、固定ドライブ(C:\)のみにします。
長期の監視などでアドバイスをいただきましたが、
ReadDirectoryChangesWを使っているシステムが、すべてシステム負荷などを考えて
実装しているとは思えませんので、
普通に使ってみて問題があるようであれば調整したいと思います。
FileMonもつかって見ましたが、
私が監視したいのはフォルダの変更(作成/削除)のみで、
多少取りこぼしがあったとしても、
リカバリできる仕組みも用意しますので、
あそこまで高性能な作りは必要ではありません。
ありがとうございました。
# 突っ込もうと思って突っ込むの忘れてた
> Using Hardware AutoPlay
> http://msdn2.microsoft.com/En-US/library/aa969332.aspx
斜め読みしただけだけど
これって Windows XP における AutoPlay の実装方法についての話のような……
porinさんレスありがとうございます。
行き違いでした。。
> GetLogicalDriveStrings 等を使って全部のドライブを列挙するしかないかと。
GetLogicalDriveStringsは初めて知りました。
今はGetLogicalDrives()で取得しています。
GetDriveType()でDRIVE_FIXEDのときだけ
ReadDirectoryChangesWを使った監視にしようと思います。
> ※リムーバブルディスク等を含めるのであれば相当面倒なことになるはず……
そうですね。
でもおかげさまで方向性が見つかったので乗り越えられそうです。
> # 手元の PC(Windows 2000) だとフォルダの自動更新が行われなくなるorz
貴重な情報ありがとうございます。
Win2000で試してみます。
># どうでもいいけど CodeProject のサンプルプログラムを使用すると
なるほどそんなことがあるのですか。
気をつけないといけないですね。