紙、それは作業スペースを広げる魔術。
SEやプログラマーをされている方は、複数の職場環境で作業される方がいらっしゃると思います。
お客様先に常駐されていたり、リモートワークしていたり、自社で作業したりと多くの職場環境でご自身のノートPCで作業をされている方もいらっしゃると思います。私はそんな環境で作業をしていました。
そういった中、設計書などを印刷するなど、何かしらの印刷をする機会は結構あるのではないかと思います。
たかしさん印刷ミスるってよ。
皆様、その様にいろいろな環境で作業をしていると、間違えてネットワーク内に存在しない、ネットワークプリンターに対して印刷をしてしまうことありませんか?
A社で仕事しているのに、B社のプリンターに対して印刷をしてしまうということはあるあるだとおもいます。
ネットワークに接続されてないとそりゃ当然印刷命令が届かないので、紙が出力されないので、「あ、間違えた」と気がつき正しいネットワークプリンターを選んで再度印刷するのではないかと思います。
裏で印刷物がたまる仕様になってる
しかし、Windows10はスプーラーという、印刷物をためておく機能を使って、一旦印刷情報をスプーラーにためてそれを、印刷機に随時送るようなな仕組みになっています。
そのため、誤印刷した際もスプーラーに印刷物が溜まっています。
なので。。
間違えて印刷をしていたのを忘れて、スプーラーに溜まった状態で、該当プリンターのネットワークにつなぐと(例えばVPNで別環境からプリンターのネットワークに入ったりする)印刷物が印刷されちゃうんですよね。
印刷物が出力されたことに気がついてすぐに破棄できたらいいのですが、気が付かないで放置していて悪意のある人がその紙を持って帰ってしまったら、情報流出の危機となってしまいます。。
(こんな細かいことなんで気がついたんだ?という疑問は持ってはなりません。駄目です。)
これを防ぎたい!
こんなおっちょこちょいな人種のために、スプーラーに印刷物が溜まった状態の場合はプリンタードライバーがユーザーに印刷するか問い合わせる機能とかがWindowsにあるんじゃないかな?と思って色々ググっていたのですが、ちょうどいいのが見つかりませんでした。
スプーラーを使わないで直接プリンターに印刷物を送る設定を選ぶこともできますが、プリンターごとに設定を変えたりしなきゃいけないですし、設定わすれたりしそうだなと思いました。
防衛方式
我々エンジニアはなければ作ればいいのです。なので、ちょっと作って見ました。
コンセプト
スプーラーにただただ印刷物が溜まっている分には無害なわけで、ネットワークが切り替わったタイミングで勝手に印刷されなければいいのです。なので、ネットワーク切り替わるイベントを拾って、スプーラーのデータを全て削除してしまえばいいんじゃないかと考えました。
実装方法
環境
環境はwindows10です
プログラム
解説
windows10なので、windowsのバッチファイルでつくりました。
ソースコード
やってることはシンプル。
スプーラーとめて、ファイル消して、スプーラーを起動するだけw
net stop spooler
del C:\WINDOWS\system32\spool\PRINTERS\*.SHD
del C:\WINDOWS\system32\spool\PRINTERS\*.SPL
net start spooler
参考サイト
https://dooluka.hatenadiary.org/entry/20101121/1290267911
ネットワーク切り替わるタイミングで、上記のbatファイルを動かす。
作成したbatファイルを、ネットワークが切り替わるイベントを拾って、動く様に登録します。
下記記事などを参考に、タスクスケジューラーにbatファイルを登録してください。
できる様になったこと
ネットワークが切り替わったタイミングで勝手に印刷されることがなくなりました。 これでおっちょこちょいな私の様な人でもちょっとだけ情報流出の可能性が減りました(ちょっとだけです)
結論
SE、プログラマーは個人情報扱うことの多いお仕事なので、個人情報の流出には気をつけましょう。