[FWatch]

* ver1.8.0.5
* 2012/11/23
ver1.8.0.4の修正です。

1. 特定のファイル名で判定を誤っていた問題を修正しました。
　これは、1.8.0.3でファイル名の大文字・小文字を区別せずに判定するための修正によって発生したバグでした。
　大文字・小文字を区別せずに判定するために「小文字」に揃えて比較する際に、UNICODE文字列の小文字化に誤りがありました。
　(MBCS版には変更ありません)

2. 64ビット版を作成しました。基本的に32ビット版を64ビット版としてコンパイルし直しただけです。
　FWatchの動きや設定ファイルなどには変わり有りません。
　(MBCS版は32ビットしかありません。)

1.8.0.5より、Unicodeビルド版はVisual Studio 2010のVC++でコンパイルしています。
MBCS版はVisual Studio 2005でのビルドです。(機能的に変更ありませんがビルドしなおしています)


#######################

* ver1.8.0.4
* 2011/02/13
ver1.8.0.3の修正です。

1. ファイルの更新通知がない場合のアイドル時の基本サイクルを設定できるようにした。
2. 毎サイクルごとにiniファイルを読みI/O負荷がかかっていたため、設定ファイルのいくつかを
　 メモリ上にキャッシュするように変更した。
3. ファイル名に「;;」のような空になる無効なパターンを指定したときに
　 無限ループとなっていた不具合を修正した。
4. 環境変数の展開で各変数の値の最大長が260文字程度に制限されていた問題を修正しました。

1-2により、監視フォルダ数が多く、監視通知がなくても常時CPU負荷が数パーセント以上あるような環境では、
今回の修正により、アイドル時の負荷がほぼ0%に下がる可能性があります。
(通知を受けている場合の負荷は従来と変りません。また通知を受け取る精度も変りません。)


#######################

* ver1.8.0.3
* 2011/02/02
ver1.8.0.2の修正です。

1. ファイル名の判定が大文字・小文字を区別していた問題を修正しました。
   既定ではファイル名の大文字・小文字を区別しないようにしました。(これは設定ファイルで変更できます。)
2. 永続化ファイル、ログファイルの環境変数・特殊変数展開ができなかったものを修正しました。
3. iniファイル中のデフォルトのlstファイルで「*」の指定(ダイアログを開く)を追加しました。
4. ヘルプの誤記・記載がなかった補足事項、トラブルシュート等を追記しました。
5. リストファイルのコメント行の認識に問題があったものを修正しました。(;だけの行が有効な設定と判定されていました。)
6. ディレクトリ上の全スキャンファイルをログレベル10で出力できるようにしました。
   内部的に、いくつかの診断用の仕組みを追加しています。(おもにデバッグビルド時のみ)


#######################

* ver1.8.0.2
* 2010/11/23

ver1.7.0.1をベースに、ver1.5にあった設定項目のほとんどを復活させました。
また永続化に新たに対応しました。
サービスとしては動作する機能は未実装です。

MBCS版(Win9xにも対応)と、UNICODE版(Windows2000以降のみ)があります。
従来はMBCS版のみでした。
IE6以降が必須です。
MBCS版はVisual Studio 2005のVC++で、Unicode版はVisual Studio 2008のVC++でビルドしています。
どちらもスタティックリンクでランタイム等は必要ありません。

1. UNICODE版の場合、設定ファイルもUNICODEで保存するようにしました。
　これにより設定画面上でSJISで表現できないフォルダ等を指定した場合でも設定ファイルに保存できます。
　UNICODE版は設定ファイルがSJISの場合はSJISとして読み込みますので既存の設定ファイルを変換する必要はありません。

2. アプリケーション、パラメーター、カレントディレクトリの設定に以下の特殊変数が使えます。2つ追加されています。

PATH      : 対象ファイルのフルパス
FULLPATH  : PATHと同じ
DIR       : 対象ファイルのフォルダ
DIRNAME   : DIRと同じ
NAME      : ファイル名
BASENAME  : NAMEと同じ
NAMEBODY  : ファイル名から拡張子を除いたもの
DATE      : 現在日 YYYYMMDD
TIME      : 現在時刻 HHMMSS
SPATH     : PATHのショートネーム版
SDIR      : DIRのショートネーム版
COUNT     : 起動した、または起動を試行した回数
           (監視状態を保存する場合は回数も保存される。そうでなければ開始ごとに0にリセットされる。) 
RUNCOUNT  : アイテムごとの実行回数
           (監視状態を保存する場合は回数も保存される。そうでなければ開始ごとに0にリセットされる。) 
           (復活)
ATTRIBUTE_DIRECTORY : 対象ファイルがディレクトリであるか?(ファイルしか通知しないので常に0となる。)
           (復活)
ATTRIBUTE_ARCHIVE   : 対象ファイルがアーカイブ属性であれば「1」、そうでなければ「0」
           (復活)
ATTRIBUTE_SYSTEM    : 対象ファイルがシステム属性であれば「1」、そうでなければ「0」
           (復活)
ATTRIBUTE_HIDDEN    : 対象ファイルが隠し属性であれば「1」、そうでなければ「0」
           (復活)
ATTRIBUTE_READONLY  : 対象ファイルが読み取り専用属性であれば「1」、そうでなければ「0」
           (今回追加)
WATCHDIR  : 監視ディレクトリ(末尾は必ず「\」で終わります。)
           (今回追加)
RELATIVEPATH : 対象ファイルの監視ディレクトりからの相対パス (フォルダが1階層以上ある場合のため)
           (今回追加)
RELATIVEDIR  : 対象ファイルの親ディレクトリの監視ディレクトりからの相対パス (フォルダが1階層以上ある場合のため)
           (今回追加)
CONFDIR   : 〜\APPDATA\fwatch.ini\のディレクトリパス(末尾は必ず「\」で終わります。)
           (今回追加)
MODULEDIR : FWatch.exeのあるディレクトり(末尾は必ず「\」で終わります。)
           (今回追加)
INIDIR    : fwatch.iniのあるディレクトリ(末尾は必ず「\」で終わります。)
           (今回追加)
LSTDIR    : lstファイルのあるディレクトリ(末尾は必ず「\」で終わります。)
           (今回追加)

3. Win32エラーコードのログへの出力がされてなかった問題を修正しました。

4. 監視ハンドルの再試行期間が判定されていない問題を修正しました。

5. タイムインターバルによる強制更新チェックのログレベルを7に降格しました。(ログが出過ぎるという指摘のため。)
ログレベルは以下のようになっています。(デフォルトは5)

 0: エラーのみ
 1: ファイル確定、開始、終了メッセージ、監視状態の保存・復元
 2: アプリケーションの実行、終了、アプリケーションの重複実行のスキップ通知
 3: 変更通知
 4: 監視ハンドルの作成、破棄、再作成、ログオンユーザの偽装・偽装解除
 5: 変更ファイルの確定待ち開始、削除確定結果
 6: 削除待ち、削除確定
 7: ディレクトリのスキャン結果、強制更新チェックの開始メッセージ、監視状態の保存(定期)
 8: 走査するディレクトリ、走査開始メッセージ
 9: 検出した全てのファイルの状態
10: デバッグメッセージ

6. バージョン情報ダイアログを更新した。

7. FWatch.iniのパラメータに監視部コアの情報を加えた。

8. 置換変数の変数名を変更できるようにしている。(詳細はFWatch.iniを確認してください。)

9. 設定ファイル(lst)の保存形式をエスケープ対応とした。(version1.7/1.8の識別子がある場合のみ)
　　パラメータ欄は改行コードを入力できるようになりました。
　　アクションの実行時、プロセスの引数に渡される場合には改行コードは空白に置換されます。

10. 永続化に対応した。また永続化を定期実行するための設定が増えた。(FWatch.ini)
 [注意] 永続化ファイルにある監視状態にないすべてのファイルがFwatch開始時に変更ありと判定されるため、
 永続化ファイルを保存後に設定を変更した場合は大量に変更ありと検知される場合があります。

11. ログファイルのメッセージ構築バッファが足りず長いパラメータ等の場合、メッセージがログに出力されなかった問題を修正。

12. 異なるユーザに偽装してフォルダを監視できるようにした。(Windows2000以降のみ)

13. アクションとして「*PROCESS」を追加。ShellExecuteではなく直接プロセスを起動します。
　　アプリケーション名にexeへのフルパスを指定しパラメータに引数を指定するか、
　　アプリケーション名を空にして、パラメータにexeへのフルパスと引数をコマンドライン形式で記述します。
　　(後者を推奨。アプリケーションによっては前者の形式は使用できません。)
　　exeへのパスは絶対パスが必要です。ドキュメントや*.batは直接起動できません。*.batならばc:\windows\system32\cmd.exeのようにフルパスでcmd.exeを指定し、
　　引数として*.cmdファイルへのパスを指定してください。

14. アクションとして「*RUNAS」「*RUNAS;load_profile=true」を追加。異なるユーザでプロセスを開始できるようにした。(Windows2000以降且つUNICODEビルドのみ)
　　UNICODEビルドでない場合、もしくはユーザが指定されていない場合はRUNASは、*PROCESSと同じとなります。
　　コマンドラインの記述方法は「*PROCESS」と同じです。
　　「*RUNAS;load_profile=true」はプロセス開始時に指定されたユーザの環境変数等のプロファイルを読み込みます。
　　そのため起動が遅くなります。頻繁に実行される場合には適していません。またネットワークドライブ等も復元されますが、
　　そのユーザの権限で開けないネットワークドライブではパスワードの再確認が必要となり、自動にはアクティブにならないことに注意してください。
　　内部的にはCreateProcessWithLogonW APIを使用しています。

15. アクションとして「*IPMSG」を追加、IP Messengerへメッセージを送るアクションとなります。
　　アプリケーション名に送信先のIPアドレス(もしくはホスト名)、パラメータにメッセージ内容、
　　カレントディレクトリに「ユーザ名@ホスト名」の形式で送信元名を指定します。
　　(カレントディレクトリを省略したか、コロンが含まれる場合はユーザ名とホスト名は自動的に設定されます。)
　　それ以外のパラメータは無視されます。
　　送信できたかどうかはチェックされません。
　　受信先のIP Messengerが起動されているかどうかもチェックせず、起動されていない場合はパケットは単に破棄されます。
　　またUDPによる送信のため512バイトを超えた場合にパケットが破棄されるかどうかはネットワーク環境次第です。
　　(ローカルマシン内であれば、あるいはルータを超えなければ多分問題有りません。)

16. アクションとして「*SOUND」を追加しました。これは単に情報メッセージ音を出すだけです。
　　アプリケーション名として、システム定義のメッセージ種類を指定するか、wavファイルを絶対パスで指定します。
　　たとえば、アプリケーション名に「MailBeep」とすればメール通知音となります。
　　アプリケーション名が省略された場合は通常の情報メッセージ音となります。
　　それ以外のパラメータは無視されます。

17. 起動時に監視リストダイアログを開くかどうかをFWatch.iniファイルで指定できるようにしました。

18. UNICODE版のログに余計なBOMがついていたので修正しました。

19. ヘルプをHtmlHelp形式に改め内容も現在の実装に合うように修正しました。また、コンテキストヘルプを追加しました。

20. 監視設定で、複数の通知をまとめて処理できるパラメータを追加しました。

21. 監視設定で「無効」にするチェックボックスを追加しました。また、監視リストダイアログ上から監視の開始・停止ができるようにしました。

22. 設定のコピー機能を追加しました。監視リストダイアログで既存項目を選択した状態で追加ボタンを押下するとコピーの選択ができます。




#######################

* ver1.7.0.1
* 2010/11/04

５年ぶりの改修です。

MBCS版(Win9xにも対応)と、UNICODE版(Windows2000以降のみ)があります。
従来はMBCS版のみでした。
IE6以降が必須です。
MBCS版はVisual Studio 2005のVC++で、Unicode版はVisual Studio 2008のVC++でビルドしています。
どちらもスタティックリンクでランタイム等は必要ありません。

1. ログがほとんど出ない状態だったのでログを出すように修正した。
   (UNICODE版の場合はUTF-16でログが出力されます。)
2. ログレベルを設定できるようにした。
3. ログを日付変更時にbakファイルにして切り替えできるようにした。(FWatch.iniファイル参照)
4. ログファイルをログ出力後一定期間開いておけるようにした。
5. 監視ハンドルの再作成に対応した。
6. UNICODEビルドに対応した。UNICODEファイルを扱えます。
   ただし、設定ファイルはSJISのままです。
   (SJISで表現できないフォルダ等の設定は保存・読み込みすることができません。エラーになります。)
7. UNICODE版はVisualStyleに対応しています。
8. アプリケーション起動時のカレントディレクトリを設定できるようにした。
　　省略時はFWatch.iniの設定に従います。(FWatch.ini参照)
9. アプリケーション、パラメーター、カレントディレクトリの設定には特殊変数を使えるようにしました。
　Ver1.7(4.2.e2)では%path%以外は外していました。以下のものを復活させています。

PATH      : 対象ファイルのフルパス
FULLPATH  : PATHと同じ
DIR       : 対象ファイルのフォルダ
DIRNAME   : DIRと同じ
NAME      : ファイル名
BASENAME  : NAMEと同じ
NAMEBODY  : ファイル名から拡張子を除いたもの
DATE      : 現在日 YYYYMMDD
TIME      : 現在時刻 HHMMSS
SPATH     : PATHのショートネーム版
SDIR      : DIRのショートネーム版
COUNT     : 起動した、または起動を試行した回数 (監視開始時からの回数)

10. 永続化の設定項目が増えていますが、未実装です。

サービスとしては動作する機能は未実装です。


#######################

* ver1.4.2.e2
* 2005/08/16

未完成、且つ、デグレード版(1.4.2ベース)。
別ユーザとしてプロセスを起動する機能、およびサービスとしては動作する機能がありません。
本バージョンは監視部がマルチCPU環境下のWindows2003で正常に動作するか検証するためのテストバージョンです。

監視部を刷新しており、マルチCPU環境下のWindows2003等でうまく動作しない場合、このバージョンなら動作する可能性があります。

これをベースにver1.7への改定を進めていますが、作業が思うようにはかどらないため不完全な本バージョンを先に公開いたします。



#######################

TODO:
2010/11/4
 * 64bitビルド
 /ok 永続化メカニズム対応
 /ok UNICODE設定ファイル保存に対応

2005/4/19
 /ok 複数マッチング
 * 未処理例外ハンドラ
 * サービス時のメッセージボックス、
 /ok 監視ハンドル再作成
 /ok ログ見直し
 /ok ログレベルの設定
 
