はじめまして。よろしくお願いします。
USBフラッシュメモリ等のデバイスについて、事前に登録された以外の物の使用を禁止するため、
シリアル番号を参照し、登録されていなければ切り離す…という様なものを作りたいと思っています。
過去のスレッドを参考にし、SetupApiを使用して、それっぽい動きをするところまではできたのですが、
DBT_DEVICEARRIVALの後切り離しを要求し、DBT_DEVICEREMOVECOMPLETになるまでに数秒の時間を要するため、
その間にそのデバイス内のファイルが開かれる等の操作が入ると、閉じるまでは切り離せなくなってしまう…
という事態をクリアできません。
取りあえず、判定が済むまでの間デバイスに対する操作をさせない様に、接続された時にコンピュータ等の
ウィンドが開いていた場合は(乱暴な方法ですが)強制的に閉じたりしていますが、デバイスの切り離しが
完了するまで、新規にコンピュータのウィンドを開く操作を禁止する、あるいは一定時間の間、特定の
ドライブに対する操作を禁止する良い方法があればご教授下さい。
Windows vista sp2 + Delphi6 Proです。
http://trendy.nikkeibp.co.jp/article/tec/winxp/20050112/110512/
とか
http://blog.hushlogue.com/?eid=546999
とか
KHE00221様、情報をありがとうございます。ドライブを非表示にする方法があるのですね。
非常に参考になりました。再起動しないと設定が反映されないのと、レジストリ変更を変更するために、
管理者への昇格が必要なことを考えると、内臓固定のHD等以外は、原則非表示にしておく…
みたいな使い方ですね。早速やってみます。
情報をありがとうございました。ドライブを表示させなくしてしまうと、登録してあるデバイスも
表示されなくなってしまうので、そこを何とかしなければなりませんが、考えてみます。
ありがとうございました。
ツイート | ![]() |