ごみ箱自動クリア

 個人情報保護法の施行が目前に迫ったこと。および個人情報の漏洩事件が大きく取り上げられるようになったこと。これら対応して個人情報漏洩防止対策が促成栽培されている。第一回情報セキュリティエキスポとかいうやつでも、いろいろとソリューションというやつが紹介されていたらしい。ところが困ったことが一つある。「個人情報漏洩防止」が主眼であったはずが、いつの間にか「個人」がとれて「情報漏洩防止」が叫ばれていることである。
 なんか変だなあ、と思いつつも、そんなの専門外だとブーたれつつも、真面目な私はいろいろと対策を練っているのはここんところよく取り上げているとおり。(なお、先人たちの努力によりシステム開発部門に個人情報は構造的にやってこないようになっている。だから実は「個人」情報保護施策ならやる必要がない。)
 当方は法律には疎いんで、つい技術的に防止する方法を考えていたんだけど、しかしなんだね。情報漏洩防止にまともに取り組むと、絶望的になるね。個人情報は個人情報保護法で守ってくれるけど、その他の情報は守るに足と法的に証明するだけでも大変だね。不正競争防止法を根拠として「営業秘密」ということで守るのが適当のような気がするけど、経済産業省が出してくれている「営業秘密管理指針」などを見ると絶望的になるね。《保有者が主観的に「営業秘密」と考えているだけでは足りず、問題とされている情報の秘密保持のために必要な手段を講じていること、かつ、それにより当該情報が営業秘密であることがアクセスした者に認識できるものと客観的に判断されることが必要とされている》そうな。電子データの貸出しをどうやってガードする?ファイルを開いたとき「厳秘」のハンコを押しているのが見えるようにできる?たばこの火を貸した後、必ず返してもらうにはどうすればよいかという問題に匹敵する難問よ。いったいどうすればよいのか分からないと言うのが正直なところ。(そのためにソフトを書いているのだが。)

 特に請負契約で仕事を依頼している以上は、成果物は(少なくとも検収までは)先方当方の共有物。こちらがいくら「営業秘密だ」と騒いで、かっちりガードしたとしても、先方にその気がなければ営業秘密と認定されそうもない。となると、先方ときっちり話し合いをして、どれを営業秘密とするかを決めて、管理手続も統一化して、といろいろ考えなければならない。
 よし、こうなれば全社的問題だ。専門部署に投げ返せるぞ。(と、実は喜んでいたりする。)

 では、どうやって社内の専門部署にお仕事をお願いするかを考えていたところ、無邪気な身内がやってきた。

「ねえ、情報漏洩防止の観点から各人のパソコンのハードディスクにデータを残すな、という運動をやっているの。でね、ごみ箱の中のファイルも問題になっているんだけどね、パソコンを落とすときに必ずごみ箱を空にするということにしたいの。忘れないように自動化できないかねえ。」
「起動するときに消したんじゃ駄目?ただごみ箱を空にするためだけに、ずっとプログラムを立ち上げておくというのはシステム屋として抵抗あるんだわ。」
「夜間にハードディスク盗まれた場合に対応できないんで駄目なんだって。」
「入退室管理しっかりやっているんだから大丈夫なハズなんだけどな。」
「でも気になるって人がいるの。でも最悪の場合、システム立ち上げたらごみ箱が空になるのなら、実質的にアクセス不可と言うことで突っ切るしかないかねえ。」
こうなると多少はこっちにも意地があるので、Webをサーチして、おお、Ryujiさんありがとう、SHEmptyRecycleBinというAPIがあるのね。(現行MS-WindowsまたはIE4.0以降)
「なんかできそうよ。MS-WindowsNT4.0では%SystemRoot%\Recyclerのディレクトリを探して消さないと駄目かもしれないけど。で、システムの終了を捉えるには・・・」
やはりFDELPHIの過去ログが一番役立つ。
「ああ、あった。Message WM_ENDSESSIONてのを使うのね。じゃあなんとかなるわ」
ブラシュアップの余地はありますが、はい、10分でできました。
 なお、この身内(普段は私の子どもの母親をやっている人)作ってはもらったものの怖くてまだ使っていないらしい。

 ニョーボにすら見捨てられたソフトです。使用法を書いてVectorあたりにアップロードする気力はとてもないので、もし万が一使いたいという人がおられました時のために直接コードを書いておきます。

PROCEDURE宣言は
PROCEDURE WMEndSessionProc(var msg: TWMEndSession); Message WM_ENDSESSION;

コードはこれだけ(MS-WindowsNTにも対応したので実際にはもう少し長くなった)
PROCEDURE TForm1.WMEndSessionProc(var msg: TWMEndSession);
BEGIN
  SHEmptyRecycleBin(handle,nil,0);
END;

uses節にShellapi98を入れておくこと。(上記のRyujiさんが公開してくれています。感謝。)
 仕方なくTFormを使っているけど、例えばTComponentsにPROCEDUREをくっつけたんじゃだめかね?サービスにしたいという気もある。

公開場所:なし
フリーソフト開発秘話、目次
ホーム