山田偽研

CRCRC

概要

ファイルのハッシュ値(CRC16, CRC32, MD5, SHA1)を計算・検査するツールです.

このソフトには以下のような特徴があります.

  • ファイル/フォルダをドラッグ&ドロップで読み込む
  • 検査用ハッシュテーブルの書式を正規表現で自由に定義可能
  • 結果を様々な書式で出力可能

備考

ダウンロード

CRCRC.gif CRCRC_041b_WIN_NET451.zip Ver.0.41b .NET 4.5.1版 2017年1月29日
  CRCRC_041b_WIN_NET35.zip 同上 .NET 3.5版 2017年1月29日
  CRCRC マニュアル - - 2017年1月29日

実行に必要な実行環境

CRCRCを実行するためには,下記の実行環境が必要です.

.NET Framework

このソフトを利用するためには,事前にMicrosoft .NET Framework 4.5.1もしくは3.5をインストールしておく必要があります.ご自分の環境に合わせたパッケージを以下のリンクから取得してください.

改造履歴

Ver.0.41b

  • 計算終了時に同ハッシュ値の項目だけ文字色を変更するオプションを追加しました.
  • ショートカットキーのみ実装していた「親フォルダを開く」と「既定アプリで開く」機能をツールバーボタン&コンテキストメニューでも利用できるようにしました.
  • 「親フォルダを開く」ときにファイルを選択して開くようにしました.
  • ツールバーボタン用アイコンを新調しました.
  • コンテキストメニューのショートカットキーを刷新しました.

Ver.0.40b

  • CCBでの公開に引き続き,.NET Framework 4.5.1でビルドすることにしました.念の為,.NET 3.5でビルドしたパッケージも置いています.

Ver.0.39b

  • CCBと同じ理由で,ある条件下では,項目上下移動がうまく動作しないバグを修正しました.

Ver.0.38b

  • リスト選択イベントの処理をOnSelectedIndexChnagedからOnMouseUpとOnKeyUpを使う方法に移行しました.これにより不必要なイベントをスキップする手間が大幅に軽減されました.
  • ダイアログボックスのイベントハンドラーを整理しました.
  • ステータスバーの「登録方法」切り替えボタンをドロップダウンメニュー形式に変更しました.
  • 「オプション設定|パターン」の編集をTMNiCBM3と同じ方法に変更しました.
  • 「オプション設定|パラメータ|保存|文字エンコード」をメニュー選択方式に変更しました.
  • 「オプション設定|パラメータ|保存|テーブル名」パラメータを追加しました.ハッシュテーブル名をひな形設定することができます.
  • ドロップデータの構成によってハッシュテーブルファイルの保存先が最適になるように工夫しました.
  • オプション設定ダイアログの「中止ボタン」が正常に機能していなかったバグを修正しました.

Ver.0.37b

  • ファイルを追加登録する際は重複チェックするすることにしました.
  • ファイル登録時のメッセージを変更しました.

Ver.0.36b

  • ハッシュテーブル読み込み&保存に関する相対パスの取り扱いが,いろいろとポンコツだったので,全面的にコードを書き換えました.これからはハッシュテーブルと計算対象ファイルがどんなに複雑な配置関係でもパスを表記できるようになります.
  • ハッシュテーブル保存のパス表記方法に「絶対パス」を追加しました.
  • ハッシュテーブルの初期ファイル名を"Result"に固定しました.
  • ステータスバーに「登録ファイルの選択数」を表示することにしました.
  • 処理方法が計算モードならば何度でもファイルを追加登録できる仕様に変更しました.
  • 今までハッシュテーブルを計算対象として読み込ませるにはコントロールキーを押しながらドラッグ&ドロップするという手順でした.しかし,修飾キーが何だったか覚えているのは非常に煩わしいので,明示的なクリッカブルコントロールに変更しました.
  • 登録ファイルをダブルクリックすると関係づけされたアプリで開きます.シフトキーを押しながらダブルクリックすると親フォルダをエクスプローラーで開きます.

Ver.0.35b

  • iCBM3等と同様にターゲットプラットフォームを「x86」に変更してビルドしました.
  • iCBM3等と同様に設定ファイルを読み込むときに例外が発生した場合は強制終了することにしました.
  • モノクロトーンのアイコン&プログレスバーに変更しました.
  • 検査モードと計算モードはファイルを登録した時点で確定することにしました.つまり,次のドラッグ&ドロップでファイル登録を行うまではモード変更できない仕様になったわけです.
  • オプション設定ダイアログを終了する時,正規表現や文字エンコードの表記に誤りがないかどうかチェックすることにしました.もし,誤りが発見されたらCCBと同様にその入力欄をハイライトしてダイアログを閉じません.
  • ハッシュテーブルのファイルをサブフォルダまで自動検索してアサインする機能を廃止しました.この方法では関係ない同名ファイルをミスアサインする危険性があることがわかったからです.
  • NotFoundエラーの起こった項目に対してはリセットコマンドをスキップすることにしました.
  • 「選択ファイルをゴミ箱へ」コマンドは,VisualBasicのライブラリー関数による方法をやめて,WinAPIによる方法に戻しました.多数のファイルを一気に削除するにはWinAPIの方法の方が圧倒的に早いというTMNなどの実用実績からの判断です.
  • 例えばMD5の計算をした結果を保存するとき,ダイアログで出力書式をいろいろ選び直していると,WinCRC形式の拡張子が".MD5"であるべきなのに".CRC"となってしまうバグを修正しました.

Ver.0.34b

Ver.0.33b

Ver.0.32b

  • 登録に関するコマンドを無計画にどんどん増やしていった結果,最近のバージョンは使い勝手が返って悪くなった気がします.そこで,登録操作は「ドラッグ&ドロップ」のみに絞って,他はすべて廃止することにしました.
  • 継ぎ接ぎだった読み込みアルゴリズムを抜本的に改良しました.正規表現を使ってどんなフォーマットのハッシュテーブルでも読み込めるようにしました.もちろん,ユーザーが自由に新しいフォーマットを定義することも可能です.
  • ハッシュテーブルは自動的に文字エンコードを認識して読み込むようにしました.
  • 計算結果の保存は,WinCRC形式・WinSFV形式cccs形式から書式を選択できるようにしました.
  • 計算結果ファイルの文字エンコーダを設定できるようにしました.

Ver.0.31b

  • Windows 7では,.NET内蔵の方法でリスト整列を続けると整列方向アイコンの表示が乱れる(あらぬアイコンが表示されてしまう)バグが発生します.そこで,内蔵コマンドを諦め,WindowsAPIを使うことにしました.
  • Windows 7では,XPで問題なく綺麗だったレイアウトが崩れることが多々あります.各OSのテーマごとに設定されたデフォルトフォントの表示サイズが微妙に異なるため歪みが生じるのでしょう.そこで,テーマの雰囲気を壊してしまうのであまりやりたくないのですが,明示的にフォントを指定することでレイアウト崩れを防ぐことにしました.
  • 初期設定ファイルの読み込みをiCBM3などと同様にXmlTextReaderからDOM形式にしました.

Ver.0.30b

  • 「結果を保存」コマンドを実行する際,初期保存先をなるべく全項目の共通する親フォルダ位置にセットするようにしました.初期ファイル名もそのフォルダ名にするようにしました.
  • ハッシュテーブルのファイル名を相対パス表記とするか否かを設定できるようにしました.項目が複数のフォルダに跨り,それらに同名ファイルが存在する場合にそれらを区別するにはこの相対パス表記が有効です.
  • 「ファイルパスを検索」する際,ファイル名の一部が一致した場合でも検索成功と見なしてしまうバグを修正しました.これは,かなり致命的なバグでした.
  • 計算・検査を行うファイルの属性が「読み取り専用」だった場合,ファイルをオープンできないバグを修正しました.
  • 想定外のエラーが起こったときスレッドを強制終了させる仕様は強引過ぎるので,その項目だけスキップして計算を続行するようにしました.
  • WinSFV形式の記述項目中のファイル名にスペースを含む場合,正常に読み込めない場合がある問題を解決しました.具体的には,正規表現の解釈をわざと末尾から行っています.こうすることで,確実にハッシュ値とファイル名を分離できます.恥ずかしながら,正規表現のオプションにこういう手法があるのを,今回はじめて知りました.

Ver.0.29b

  • 複数ファイルの同時計算(マルチスレッド)をできるようにしましたが,従来の単一計算よりもパフォーマンスが下がると言う惨憺たる結果になったので,隠しコマンドにしています.
  • 検査のためのハッシュテーブルは,予め用意されたデフォルト書式(WinCRC形式,WinSFV形式cccs形式)とユーザー定義書式を読み込むことができるようにしました.特に,ユーザー定義書式は正規表現で記述するようになっており,汎用性が高いものと思われます..
  • 検査項目を手動でセットするための,「新規項目を登録」コマンドを追加しました.
  • ステータスバーでのプログレスバー表示をやめ,リスト項目ごとに表示するオリジナルプログレスバーを導入しました.
  • ハッシュ値とサイズのリストカラム幅の自動調整がタイト過ぎるので,オフセットを挿入するようにしました.
  • 他ソフトで作成されたハッシュテーブルをCRCRCに読み込むと,CRCRC標準の書式(ハッシュ値の大文字・小文字,サイズの桁区切り)に揃っていないことがありますが,読み込む時点でそれらを準拠した書式に整形するようにしました.
  • MD5とSHA1のハッシュ値の表記が大文字だった場合,正常に検査が行われないバグを修正しました.すっげー,基本的なポカに今まで気づいてませんでした.お恥ずかしい!
  • 動作の速いマシンでは,ステータスバーの項目数表示が実際の動作に追いついていない場合がある問題に対処しました.
  • 計算中にファイルをドラッグ&ドロップできてしまうバグを修正しました.まぁ,これはこれでおもしろい&便利な機能かもしれませんが,仕様としては禁止することにします.

Ver.0.28b

  • ファイル登録は追加モードをデフォルト動作としました.従来のように,登録のたびに既存項目をクリアしたい場合は,「オプションキー」を押下しながらドラッグ&ドロップします.
  • ファイル登録時にファイルパスがアサインできなかった場合,ステータスバーにエラーメッセージを表示することにしました.
  • 「ツールバー・削除ボタン」をドロップダウン形式にして,「全項目を削除」と「重複項目を削除」コマンドを追加しました.
  • 「ツールバー・初期化ボタン」をドロップダウン形式にして,「全項目を初期化」コマンドを追加しました.
  • 「ツールバー・選択ボタン」を新設しました.更に,CCBと同じアルゴリズムを使って,選択した項目はリスト最上部に浮上させることにしました.
  • 「ツールバー・コピーボタン」を新設しました.コピーの種類もメニューの時に比べ若干増えてます.
  • 「ツールバー・オプション設定ボタン」を新設して,設定は別ダイアログで行う仕様にしました.更に,コンテキストメニューにあった「ファイルパスを自動検索」と「カラム幅を自動調整」をこちらに収納しました.そのほかも幾つかオプションを追加しました.
  • 「ツールバー・保留ボタン」はあまり使い道がないので廃止しました.
  • 「ツールバー・開始ボタン」は待機項目が存在するときのみ有効としました.
  • 「ツールバー・保存ボタン」は成功項目が存在するときのみ有効としました.
  • コンテキストメニューを階層化して整理統合しました,
  • ステータスバーの表示項目を再編成しました.
    • プログレスバーは計算/検査を実行中のときだけ表示することにしました.
    • 項目数はメッセージとは別の独自スペースで表示する事にしました.
    • コマンド実行時に「コマンド名」をメッセージエリアに表示するようにしました.
  • リスト項目を全削除したときは,整列をリセットすることにしました.
  • リスト項目を移動させるとき欄外に出ないようにしました.
  • リストボックスをダブルバッファ化してちらつきを抑えました.
  • 「ハッシュ値」と「サイズ」のカラム幅はいつも自動調整されるようにしました.
  • Beep音再生は,WindowsAPI経由ではなく.NETのMediaクラスライブラリー経由で行うことにしました.
  • ファイルをゴミ箱に捨てる操作は,WindowsAPI経由ではなく.NETのVisualBasicクラスライブラリー経由で行うことにしました.
  • リストの表示フォント&サイズを初期設定ファイルから設定できるようにしました.と言っても,ハッシュ値やサイズが綺麗に並ぶようにするため等幅フォントに限定されるわけで,そうすると「MS ゴシック」か「Courier」ぐらいしか選択肢は無いんですけどね.
  • サイズカラムの整列を行う場合,ファイルサイズの差が2GBを超えると正しく大小比較が行われなかったバグを修正しました.
  • バッファサイズが大きくなると,プログレスバーの進捗が正しく行われないバグを修正しました.
  • 検査モード実行時,異なる形式のハッシュテーブルを同時に読み込めてしまうバグを修正しました.原理上,異なる形式のハッシュ値を同時に計算することはできないので,この操作は禁止されるべきです.

Ver.0.27b

  • .NET Frameworkのバージョンを3.5に引き上げてリビルドしました.

Ver.0.26b

  • 「ハッシュテーブルをドロップしたとき,それより下位のフォルダを自動検索して,対応するファイルを確定する」オプションを追加しました.
  • ツールバーの「ファイルパスを検索」コマンドでは,ハッシュテーブルと計算されるファイルのフォルダに親子関係がなくても,ファイルパスと認識するようにしました.
  • ファイルパスが確定していない項目は,アイコンをエラー状態(赤色)に表示することにしました.

Ver.0.25b

  • 操作が複雑なだけであまり実益のないリネーム関連の機能を廃止しました.
  • リネーム機能を廃止した代わりに,ハッシュテーブルと検索対象のファイルを自動・手動で確定する機能を新設しました.リネーム機能の時は,改名規則を編集して実行する手間がかかりましたが,こちらの場合はハッシュテーブルとファイルの入ったフォルダを同時にドラッグ&ドロップするだけで,勝手にファイルパスを見つけ出してくれるので,非常に便利だと思います.
  • リストに「ファイルパス」を表示するカラムを追加しました.
  • ツールバーの「対応するURLリストを読み込む」ボタンと関連するコマンドを廃止しました.
  • ツールバーの「作業ディレクトリを開く」ボタンと関連するコマンドを廃止しました.その代わり,リストアイテムを「ダブルクリック」すると,対象ファイルの親ディレクトリをエクスプローラーで開く機能を新設しました.
  • ツールバーのボタンを16x16ピクセルから22x22ピクセルのサイズに変更しました.
  • コマンドを実行したら,必ずリストにフォーカスを移動させるようにしました.
  • 「選択項目を保留」コマンドを実行したら,該当ファイルのサイズを引いた値をステータスバーの合計サイズに表示するようにしました.
  • 「選択項目を保留」コマンドを既に「保留状態」にある項目に対して行うと,「選択項目を初期化」することにしました.つまり,保留コマンドはトグル動作するようになったわけです.
  • 様々なメッセージやキャプションを変更しました.

Ver.0.24b

  • iCBM3 Ver.0.76bの改造履歴に記した通り、ビルド方法に問題があったので、こちらも同じ修正を施しました.

Ver.0.23b

  • ソートを行ったとき、カラムヘッダに整列方向アイコンを表示するようにしました.余談ですが、.NET 2.0になってやっとビルトインコマンド(プロパティ)だけでカラムヘッダにアイコンを表示できるようになりました.

Ver.0.22b

  • .NET 2.0 仕様にバージョンアップしました.
  • .NET 2.0 で厳格になったマルチスレッドでのお作法から逸脱していたコードを全面的に書き直しました.
  • .NET 2.0 から導入されたToolStrip・StatusStrip・ContextMenuStripを採用して、ユーザーインターフェースを一新しました.
  • 初期設定フォーマットを大幅に変更しました.
  • iCBM3と同じように、初期設定ファイルが存在しない場合や新しく増えたパラメータの既定値をデフォルトファイル(default.XML)から読み込むようにしました.
  • フィルタコマンドを記述したファイル(filter.txt)を廃止し、初期設定ファイルに統合しました.
  • ファイルサイズが小さい場合、プログレスバーを動作させるのは計算時間より画面表示のほうがオーバヘッドとなってしまうので無駄です.そこで、ある閾値以下ではプログレスバー表示をオミットする設定を、初期設定ファイルに記述できるようにしました.

Ver.0.21b

  • iCBM3 Ver.0.35bと同様に、いくつかのクラスを整理統合して、静的モジュール化しました.例によって、この改造による省メモリー効果はまったくありません.
  • ツールバーのモード変更ボタンの使い方&見た目がイマイチなので、ドロップダウンメニュー形式にしました.見た目的にはダサくなったけど、こちらの方が直感的でわかりやすいのではないでしょうか?
  • 一部のツールバーアイコンを変更しました.また、ヴィジュアルスタイルをXP風にしました.
  • 一部のアプリケーションランチャーが、CRCRCのコマンドライン引数に「Windows負の遺産・短いファイル名」を渡してきます.実行には支障ないのですが、ファイル名表示が小汚くなるのでゲンナリします.このような場合、強制的に「長いファイル名」に変換するようにしました.
  • リストペインに複数のフォルダやファイルを同時にドロップしたとき、相対パス名の表記が乱れることがあるバグを修正しました.この事象は、CRCRC内部でのルートフォルダの取り扱いの定義が曖昧だったことによるので、定義をしなおしました.
  • ショートカットの真のパスを解決して登録するのは、いっしょに登録した普通のファイルとの整合性を考えると非常に面倒なことが起こるので、やめることにしました.[*.lnk]として登録されます.
  • アプリにファイルをドロップしたときに、拡張子の種類から[検査]/[計算]モードを判別して起動するようにしました.

Ver.0.20b

  • リスト表示の際、カラム幅を自動調整するか・しないかを選ぶことができるようにしました.コンテキストメニューから設定できます.最近、やたらと長い名前のファイル(時間や圧縮方式など金魚の糞みたいに)が多いので、強制的に自動調整する今までのバージョンは、逆にありがた迷惑だったようです.
  • アピアランスのデザインをクラシックタイプにしてみたら、コントロールの配置がかなり不恰好だったことが判明.レイアウトをやり直しました.
  • バージョンアップなどで、初期設定ファイルのフォーマットを変更したとき、XMLファイルがクローズされなくて、アプリ終了時に初期設定の保存に失敗してしまうバグを修正しました.

Ver.0.19b

  • 大量のファイルを登録すると、完了がとてつもなく遅かった問題を解消しました.(いや〜、要はListView.Items.AddRangeメソッドを使っただけなんだけど、劇的です...余分にテンポラリー配列を作らなきゃいけない手間はかかるけど、こっちの方がずっといいや.
  • BEEPの音色を変えてみました.

Ver.0.18b

  • 公開バージョン.