2010年12月19日日曜日

子供だましで子供を騙す

家族と共有しているデスクトップPCで、起動してほしくないプログラムをスタートメニューやデスクトップのショートカットからは起動できないように設定したい。なぜこんなことをしなくてはならないかというのは、前回の記事がその理由である。
子供とカミサンにはデスクトップ上のショートカットからVMwareの仮想マシンを使ってもらうので、メールやブラウザの設定については完全に分けることができる。だが、俺のデスクトップが無防備だ。家族とはいえ、俺のメーラーやブラウザを弄り回されるのは御免である。また、仮想マシンの外はYahoo!あんしんネットで保護されていない。俺のWebブラウザからはWeb上の有害コンテンツにはアクセスし放題、変な.exeファイルなどダウンロードし放題だ。URLも拡張子も知らない人たちにWebブラウザを触らせるのは超危険だ。Windows 7では、制限ユーザーに特定のプログラムしか起動できないように設定することもできるが、Windowsをマルチユーザーで使えない以上、その方法は無理だ。プログラム毎に起動パスワードをつけるようなフリーウェアもあるが、それだとかえって自分が使う際に面倒になる。そこで考えたのが次の方法である。大人には通用しないが、子供とカミサンにはこれで通用する。

 要するに、プログラムの起動前に、Unlock状態を示すファイルの存在を確認し、ファイルが無ければプログラムを起動しないというだけである。

まず、適当な場所にバッチファイル用のフォルダを作成する。
例)C:\Users\ore\Documents\ore_batch\

その下に、3個のバッチファイルを作る。
ore_lock.bat (Unlock状態を示すファイルを削除してLockをかける)
@echo off
del C:\Users\ore\Documents\ore_batch\unlocked.txt


ore_unlock.bat (パスワードを入力させ、正しければUnlock状態を示すファイルを作成する)
@echo off
set /p in=Please Enter password:
if not "%in%"=="asdf123" goto end    ※これがパスワード

echo Accepted
echo Unlocked > C:\Users\ore\Documents\ore_batch\unlocked.txt
:end


ore_launch.vbs (Unlockファイルが存在していたら、コマンドラインのパラメータで渡されたプログラムを起動する)
option explicit
dim cParam
set cParam = WScript.Arguments
If WScript.CreateObject("Scripting.FileSystemObject").FileExists("C:\Users\ore\Documents\ore_batch\unlocked.txt") Then
    CreateObject("WScript.Shell").Run chr(34) & cparam(0) & chr(34),1,0
End If

Set cParam = nothing

※通常の.batで単に%1とやっても起動できるが、それだとDOS窓が残ってしまうので
vbsのshellで起動する。

そして、デスクトップとスタートメニューのプログラムを起動するショートカットに細工をする。プロパティを開いてリンク先を編集し、先頭に起動バッチ名(ore_launch.vbs)を挿入。元のリンク先はそのまま、同バッチへパラメータとして渡す。


本件とは関係ないが、PCがJwordに感染していた。
どうやらマウスコンピューターのPCには最初から仕込まれているらしい。
多分、SOURCENEXTのソフトのインストール時にも感染する

 

例)「リンク先」が "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" の場合
↓下線部を挿入
C:\Users\ore\Documents\ore_batch\ore_launch.vbs "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

※プログラムによってはアイコンの絵がVBSのものに変わってしまう場合があるので、「アイコンの変更」で元の.exeや.icoファイルを参照させ正しい絵を表示させる。

使い方
デスクトップにore_lock.bat と ore_unlock.batへのショートカットを作成しておく。
ロックするときore_lock.batへのショートカットを実行。上のように細工した全てのショートカットは、クリックしても何も実行しないで終了するようになる。
解除するときore_unlock.batへのショートカットを実行し、コマンドラインでパスワードを入力。細工したショートカットからプログラムを起動することが出来るようになる。

なお、この方法でFirefoxやThunderbirdを起動すると、スタートメニューの「最近使ったプログラム」にも残らないようだ。「最近使ったプログラム」自体を表示させたくない場合は、スタートメニューのカスタマイズで、「最近使ったプログラムの表示数」 をゼロにしておけばいい。

0 件のコメント: