一定時間、USB等のデバイスの操作を禁止するには?

解決


スムーサーE  2012-09-30 10:35:32  No: 43074

はじめまして。よろしくお願いします。

USBフラッシュメモリ等のデバイスについて、事前に登録された以外の物の使用を禁止するため、
シリアル番号を参照し、登録されていなければ切り離す…という様なものを作りたいと思っています。

過去のスレッドを参考にし、SetupApiを使用して、それっぽい動きをするところまではできたのですが、
DBT_DEVICEARRIVALの後切り離しを要求し、DBT_DEVICEREMOVECOMPLETになるまでに数秒の時間を要するため、
その間にそのデバイス内のファイルが開かれる等の操作が入ると、閉じるまでは切り離せなくなってしまう…
という事態をクリアできません。

取りあえず、判定が済むまでの間デバイスに対する操作をさせない様に、接続された時にコンピュータ等の
ウィンドが開いていた場合は(乱暴な方法ですが)強制的に閉じたりしていますが、デバイスの切り離しが
完了するまで、新規にコンピュータのウィンドを開く操作を禁止する、あるいは一定時間の間、特定の
ドライブに対する操作を禁止する良い方法があればご教授下さい。

Windows  vista sp2 + Delphi6 Proです。


KHE00221  2012-10-01 07:40:06  No: 43075

http://trendy.nikkeibp.co.jp/article/tec/winxp/20050112/110512/
とか
http://blog.hushlogue.com/?eid=546999
とか


スムーサーE  2012-10-01 09:19:31  No: 43076

KHE00221様、情報をありがとうございます。ドライブを非表示にする方法があるのですね。
非常に参考になりました。再起動しないと設定が反映されないのと、レジストリ変更を変更するために、
管理者への昇格が必要なことを考えると、内臓固定のHD等以外は、原則非表示にしておく…
みたいな使い方ですね。早速やってみます。


スムーサーE  2012-10-02 08:15:09  No: 43077

情報をありがとうございました。ドライブを表示させなくしてしまうと、登録してあるデバイスも
表示されなくなってしまうので、そこを何とかしなければなりませんが、考えてみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加