M.F.O.R. - MoveFileOnReboot

M.F.O.R. は,今すぐにはリネームしたり消せそうにないファイルを,パソコンの再起動時にリネームや削除するように予約するツールおよび開発者向けモジュールを提供します。

WindowsNT,2000 および XP ならば MoveFileEx() という API (OS が備えている機能) で簡単にそのように予約する事が出来ます。しかし Windows95,98 および Me では Windows ディレクトリ に wininit.ini という設定ファイルを記述してやらなければなりません。M.F.O.R. は特にその作業を自動化します。

注意

大きい改変の無い限り,告知なく少しずつアップデートされていきます。アプリケーションを起動すると大抵 "Build ID" が記載されているので,参考にして下さい。

(アプリケーションを起動すると,Build ID が記載されています)

目次

M.F.O.R. / Front End Agent ver.0.1 [必要最低限版・ポロリもあるよ!]

「M.F.O.R. / Front End Agent ver.0.1 [必要最低限版・ポロリもあるよ!]」(以下,Mfor Fea) は,M.F.O.R. の提供する MoveFileOnReboot() API を利用し,OS 再起動時にファイルを削除するように予約します。スパイウェアが勝手に仕込んだファイルなど,今すぐに消せそうにないファイルを消す事が出来ます。

特徴

持ち運び自由

小さな実行ファイルなので持ち運びに便利。また,どのディレクトリからでも,ファイル名を変えても (※1) 問題なく動きます。

最小限の DLL

使用している DLL は ADVAPI21.DLL,GDI32.DLL,KERNEL32.DLL,MSVCRT.DLL (※2), そして USER32.DLL のみ (※3)。どんなに致命的な状態でも,なんとか Windows が動いているなら Mfor Fea も動く?かも?

ソースコード付き

開発者が自由に MoveFileOnReboot() 機能を使えるよう,驚異的に緩いライセンスでソースコードを公開しています。

※1 スパイウェアの中には,駆除ツールのファイル名を察知して駆除作業を妨害するものも知られています。

※2 実際には MSVCRT.DLL の中の機能は使用していません。あなたが Mfor Fea をビルドするなら --nomsvcrt でこの依存を外せるかも知れません。

※3 Dependency Walker 調べ。

動作環境

次の環境で動作確認を行いました。

ダウンロード

インストール

mfor_fea.exe をダウンロードして下さい。特別なインストール作業は必要ありません。

現在のファイル名は mfor_fea.exe ですが,どんなファイル名に変更しても動作します。使うたびにディレクトリを変えたって大丈夫です。

アンインストール

mfor_fea.exe ファイルを削除して下さい。特別なアンインストール作業は必要ありません。Mfor Fea 固有のレジストリはありません。

重要:アンインストールを行っても,Mfor Fea で削除しようと予約したファイルについて,予約をキャンセルする事は出来ません。→削除予約を解除するには?

使用方法

「エクスプローラ」などのファイラから,削除したいファイルを mfor_fea.exe にドラッグ & ドロップします。

「エクスプローラ」で削除したいファイルを見つけ,マウスの左ボタンを押します。

※ 画像が小さく表示されている場合,クリックすると拡大します。

左ボタンを押したまま,mfor_fea.exe のアイコンまでドラッグします。

※ イメージは WindowsMe のものです。赤い矢印は実際には表示されません。

ダイアログが出ます。ファイルの削除の予約をしてよければ「はい」ボタンを,何もしないならば「いいえ」ボタンを押して下さい。

コマンドプロンプトから起動する事も出来ます。

(TODO: 詳しい解説を記述)

より便利な使用方法

あちこちにショートカットを作ります。

デスクトップ
(TODO: デスクトップにショートカットを作る方法を記載)
「送る」メニュー
(TODO: SendTo にショートカットを作る方法を記載)

削除予約を解除するには?

間違えて大事なファイルを削除予約してしまった場合,マシンを再起動する前に予約を取り消さなければなりません。

(TODO: より詳しい説明をここ (もしくは別リソース?) に記述)

「今すぐ消せそうにない」って? なぜそんな事態に?

通常,多少規模の大きいアプリケーションは,機能ごとにファイルを分割しています。アプリケーションの核となる部分 (Windows では一般的に“EXE ファイル”と呼ばれます) を私たちが起動し,分割されたその他のファイル (Windows では一般的に“DLL ファイル”と呼ばれます) は必要に応じて EXE ファイルがロードし,機能を呼び出します。そうする事で EXE ファイルの起動時間を短くできたり,メモリの消費を節約できたりするのです。

EXE ファイルが DLL ファイルの機能を使っている間,Windows は,DLL ファイルが削除されたり名前を変えられたり,別のファイルで上書きされたりしないように保護します。この時に私たちがその DLL ファイルを削除しようとしても,Windows は削除してはくれません(※1)。

最近「スパイウェア」が私たちを悩ませています。ブラウザの脆弱性を悪用し,とてもうざったいアプリケーションを勝手にインストールしてしまうのです。それらの目的は特定の Web サイトに強制的に誘導し,アクセス数を稼いだり広告を見せつけたりする事。そしてブラウザがより強固なセキュリティを備えるにつれ,それらも,(私たちにとって) より厄介な手法を探してスパイウェアを植え付けるようになりました。たとえば,Internet Explorer をより便利にする仕組み「プラグイン」の形をとって……その「プラグイン」こそがいわゆる DLL ファイル (※2) であり,簡単には削除できない厄介なファイルの一つです。

私たちプログラマが Windows で簡単にウィンドウを表示できたりするのは,Windows が便利な機能を提供してくれるから。そんな感じのノリで,Microsoft 社は Windows98 を作った時,Web コンテンツも簡単に表示できるように Internet Explorer を Windows 標準の機能として取り込みました。これにより Donut ファミリーSleipnir など,Internet Explorer を利用したいくつもの素晴らしい Web ブラウザが作られる事になりました。

今や Windows は,私たちのプログラムが自由にそれを使えるように,そして何より Windows 自身がよく使うため,常に Internet Explorer を「ほぼ起動させた状態」で待機させています。運悪くスパイウェアを植え付けられてしまっている場合,もしかしたらスパイウェアの DLL ファイルも既にロードされているかも知れません。── Windows は,起動してから終了するまでずっと,この厄介な DLL ファイルが削除されないように保護し続けるのです。(※3)

※1 新しいアプリケーションやサービスパックをインストールすると再起動が必要になったりしますが,Windows のこの仕様が主な原因です。ですよね?

※2 拡張子は .dll ではなく .ocx の場合もありますが,基本は変わりません。

※3 Microsof 社の名誉のために付け足しておくと,決して Windows が特別にダメダメなのだとは言えません。UNIX も Linux も MacOS も,ユーザが多くなれば厄介な問題が出てくるはずです。これでも Microsoft 社はかねてからの批判に応え,ユーザからのフィードバックに敏感になった……気がします (根拠はありませんが)。

トラブルシューティング,バグ,予想された質問,etc.

「ファイルを削除しますか?」のダイアログで「はい」を選んだら,アプリがそのまま終了してしまいました。異常終了ですか?
便りの無いのは良い便り。Mfor Fea は,処理に成功すると何も言わずに終了します。正常な状態です。
リネームができません。
ver.0.1 では,削除のみを行います。
将来のバージョンでフィックスされます。
複数のファイルをドラッグ & ドロップしても,1 つのファイルしか処理できません。
ver.0.1 では,ファイルは一つずつドロップして下さい。
将来のバージョンでフィックスされます。
256 バイト以上のファイル名を扱えません。
大概の場合は 255 バイトで事足りるとの判断により,現在は 255 バイト以下に制限されています。
問題が起き次第,将来のバージョンでフィックスされる予定です。
現在,どのファイルが削除されようとしているのか,一覧が欲しいのですが。
現在準備中です。WinNT,2k,XP でのリストの取得について研究中です。
将来のバージョンでフィックスされる予定です。
間違えて重要なファイルを削除しようとしてしまいました。キャンセルするには?
WinNT,2k,XP でのキャンセルについて,研究中です。キャンセルするには手動で設定ファイルを書き換えるか,レジストリをいじる必要があります。→削除予約を解除するには?
将来のバージョンでフィックスされる予定です。
間違えて重要なファイルを削除してしまったようです。「ごみ箱」かどこかにバックアップは残りませんか?
このように削除されたファイルは,あなた自身がどこかにバックアップを残していない限り,どこにもバックアップは残りません。Mfor Fea がバックアップをとってもよいのですが,その機能はつけていません。
仕様とします。要望によりフィックスが検討されます。
再起動後,きちんと削除できたかどうかを教えて欲しいのですが。
Mfor Fea はファイルを削除するように設定を行い,設定できなければエラーを報告します。しかし実際の削除作業は,Mfor Fea が起動していない間にシステムが行います。そしてシステムは削除作業が成功したかどうかを Mfor Fea に教えてくれません。本当に削除作業が成功したかどうかを Mfor Fea 側で調べるには,少しだけ手間がかかります (本当に,少しだけではありますが)。
仕様とします。要望によりフィックスが検討されます。
ダイアログの表示を止める事はできませんか?
ダイアログを表示させなければ,間違えて重要なファイルを Mfor Fea にドロップしてしまった時に,気付かないまま削除される事になります。
仕様とします。要望によりフィックスが検討されます。
ダイアログが表示された時,「はい」もしくは「いいえ」ボタンがフォーカスされているべきだと思うのですが。
そうする事は容易ですが,気が進みません。キーボードでの何らかの操作中に間違えて重要なファイルを Mfor Fea に渡してしまい,さらに勢い余って Space キーや Enter キーを押してしまうと,面倒臭い事になりそうです。Tab キーを押してフォーカス移動は可能です。
仕様とします。要望によりフィックスが検討されます。
Windows95,98,Me でディレクトリを削除できません。
これは Windows の仕様です。Windows 2000 や XP ならば,ディレクトリの中が空である場合に限り削除できます。
仕様とします。フィックスはされません。

著者

tkuri {at} fat.coara.or.jp

http://www.coara.or.jp/~tkuri/indexj.htm

著作権・免責等

  1. M.F.O.R. および Mfor Fea の著作権は著者に帰属します。
  2. Mfor Fea および M.F.O.R. の提供するソースコード,またそれを利用したプログラムや DLL の配布や販売は,著者へ問い合わせる事なく自由に行えます。mfor_fea.exe のファイル名は mfor_fea.exe でなくても構いません。ただし配布,販売の独占は認めません。また (サイトのスペースが逼迫しているなど) 特に理由がない限り,M.F.O.R. の脆弱性の把握に努めるべきである旨の注意書きと,M.F.O.R. の脆弱性に関する情報を入手する手段を明記しなければなりません。
  3. バイナリやソースコードの一部を改変した場合,改変部分の著作権は改変者に帰属します。
  4. 著者は不具合に対処する責任を負わないものとします。
  5. 使用者は M.F.O.R. および Mfor Fea の脆弱性に関する情報の収集に努め,脆弱性を把握してから 45 日以内に,脆弱性の修正されたバージョンを入手するか,使用者の責任において修正するか,使用を停止しなければなりません。
  6. 著者は,M.F.O.R. および Mfor Fea が直接的あるいは間接的に引き起こしたいかなる損害も,一切の責任を負わないものとします。

参考

杉山利幸のあとりえ

オンラインソフトを作成されている杉山利幸さんのサイト。M.F.O.R. と同様の機能を持つ Reboot File Deleter が公開されています。

おっと,Readme.txt に重要な情報発見。氏によると

(Windows 95,98,Me では) フルパス名に2バイト文字が使われている場合うまくいかないことがあります。これも Windows の仕様(MSDN J056531)です。

との事。これは M.F.O.R. でも発現するのでしょうか? どのような条件で? 一般に「ソ」「十」「能」などを含むパス名の取り扱いは慎重でなければなりません (いわゆる「0x5c 問題」) が,テストして見たところ,それは関係ないようです。ちーと不安です。

nao4u web

nao4u ブランド,chocotto ブランドのソフトを配布しているサイト。naoDeleteFilesOnReboot が公開されています。Mfor Fea のインタフェースはこれをパクりました。すいません。

アスピライト

武千代さんのサイト。「強削」で厄介なファイルを削除できるかも知れません。

Broadband Medic Download

ファイル削除の定番ツール「KillBox」を入手できます。

履歴

2004-09-13 Mfor Fea 公開


M.F.O.R. / Front End Agent - Copyright © tkuri {at} fat.coara.or.jp. All rights reserved.