>「SHQueryRecycleBinAPIを使用する」のチェックがはずれません。
これについては、以下となります、
フォルダオプションで「全てのファイルとフォルダを表示する」にチェックを入れると、
Cドライブとかに「RECYCLER」というフォルダが表示されていると思います。
上記はNTFSの場合でFATだと「Recycled」になるようです。ここではNTFSを前提とします。
C:\RECYCLERの中には、「S-X-X-XX-XXXXXX...」といったフォルダが見えるはずです。(Xには数字が入ります)
この、「C:\RECYCLER\S-X-X-XX-XXXXXX...」がごみ箱の本体となっており、各ドライブに存在しています。
MyTrashCanでは、各ドライブに上記のごみ箱が存在すると仮定して、ゴミのチェックを行っています。
MyTrashCanの初回起動時に、各ドライブ直下に上記のごみ箱フォルダが存在するかをチェックします。
あればそのままごみ箱の位置として記憶し、存在しない場合、そのドライブを全検索します。(遅いです)
この時、なぜ存在しないのかによるのですが、「RECYCLER」は簡単に移動できてしまうので、
ユーザが移動したのであれば想定内ですが、何もしていないのに存在しないケースがあったとすると、
私にとって想定外となります。
それで、全ドライブのチェック終了後、ドライブの数とごみ箱パスの数が合わない場合、
SHQueryRecycleBinというAPIでごみ箱をチェックするようにします。
「S-X-X-XX-XXXXXX...」というのは、レジストリから「Protected Storage System Provider」にある
サブキー名称を見ているのですが、これが複数あったりする場合があります。
この場合、「RECYCLER」の中にも「S-X-X-XX-XXXXXX...」が複数見えているので、ドライブとごみ箱
の数が合わなくなり、SHQueryRecycleBinを使用することになります。
>ハッキリはしないのですが、ユーザを切り替えると起こるように思います。
上で説明したように、ごみ箱のパス検索に失敗するような環境で、ユーザ切り替えを行った場合、
さらに、切り替えたユーザ上でMyTrashCanの初回起動時は、ドライブからごみ箱を検索する為の
処理が実行されますので、暴走しているように見えるかもしれません。この時、タスクトレイに
実行中を示すアイコンがひっそりと表示されていますので、これが消えて、SHQueryRecycleBin
を使うしかないとMyTrashCanが判断するまで待つしかありません。
SHQueryRecycleBinについては、ゴミの数とか量によってCPU使用率が高くなる傾向にありますが、
そんなに一杯になっていない状態であれば、なんら問題にならないと思います。
MyTrashCanのゴミチェック処理等は、私の環境をベースにいろいろ調べた結果として
実装されていますので、全ての環境で同じに動作するとはかぎりません。
もしよろしければ、動作しないケースのサンプルとして、もう少しお付き合い願えればと思いますが
いかがでしょうか?その場合、メールで直接返事を頂けると助かります。