スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

ファイル処理の調整(X-Finder/Tablacus Explorer)

今回のファイル処理の調整では、古いAPIのSHFileOperationの代わりに後継のインターフェイスであるIFileOperationが使えれば使う様にしました。

サイズの巨大なファイルやネットワークを使う場合に設計が古いSHFileOperationでは無駄にキャッシュをしたりして遅くなってしまっていたのが、IFileOperationでは解消されて結構速くなるとのことです。

とはいってもSHFileOperationとIFileOperationでは使い方が結構違うので、X-Finder/Tablacus ExplorerではIFileOperationでSHFileOperationをエミュレートする関数を作成して置き換えることにしました。

Tablacus Explorerのソース(TE.cpp)ではteSHFileOperationというのがその関数になります。

完璧なエミュレートという訳ではないですが、手軽に差し替えできますし、MIT ライセンスなので勝手に使って頂いて構いません。

※戻り値が成功が0(S_OK)というの以外は違っていたり、ワイルドカードやFOF_WANTMAPPINGHANDLEを指定した場合はAPIのSHFileOperationを実行します。

X-FinderでもDelphi 6でほとんど同じような関数を作成しています。

工夫している点としてはFO_MOVEでFOF_MULTIDESTFILESの際に同一フォルダであれば、移動ではなく名前の変更で処理している所です。そのため、X-FinderのNumbering:を使った連番化で、今までは元に戻すの表示が「元に戻す - 移動」だったのが「元に戻す - 名前の変更」になりました。
 
スポンサーサイト

X-Finderがavast!に誤検知でブロックされダウンロードできない場合の対処方法

2014年8月18日位からavast!がX-Finderを誤検知でブロックしてしまう問題が発生しています。
avast20.png

様々なアンチウイルスソフトで徹底的に検査するVirusTotalで調べてみましたが、全く問題が無いのでavast!の誤検知だと思います。なんとVirusTotalのavast!も問題なし……

X-Finder 12のVirusTotalの結果
X-Finder 12-0-22のVirusTotalの結果

avast!のウェブシールドの除外設定にX-FinderのサイトかVectorのサイトを追加すると指定したサイトからはダウンロードできるようになるので設定してみます。

avast!を起動し、メニューの「設定」をクリック
avast5.png

「ウェブシールド」の歯車アイコンをクリック
avast21.png

「スキャンからの除外」をクリック
avast22.png

「除外するURL」にX-Finderの公式サイトを信用する場合は「www.eonet.ne.jp/~gakana/*」を入力
国内最大級の フリーソフト ダウンロードサイトであるベクターを信用する場合は「ftp.vector.co.jp/*」を入力
avast23.png

入力したら「OK」を押せば完了です。
avast24.png

実行する場合も「ファイルシステムシールド」でブロックされるのでX-Finderがavast!に誤検知された場合の対処方法でファイルシステムシールドの除外設定も行って下さい。 

X-Finderがavast!に誤検知された場合の対処方法

今日、アンチウイルスソフトのavast!にX-Finderがブロックされました。
avast0.png

様々なアンチウイルスソフトで徹底的に検査するVirusTotalで調べてみましたが、全く問題が無いのでavast!の誤検知だと思います。なんとVirusTotalのavast!も問題ないし……

X-Finder 12のVirusTotalの結果
X-Finder 12-0-22のVirusTotalの結果

という事でavast!の隔離領域からX-Finderを救出してみます。

avast!を起動して「スキャン」をクリック
avast1.png

「隔離領域(ウイルスチェスト)」をクリック
avast2.png

「XF.exe」を右クリックして「ファイルを復元して除外リストに追加する」をクリック
avast3.png

「はい」をクリック
avast4.png

「閉じる」をクリック
avast4_.png

これでX-Finderは元の場所に戻りましたが、まだ実行すると隔離されてしまうのでスキャンから除外します。

「設定」をクリック
avast5.png

「常駐保護」をクリック
avast6.png

「ファイルシステムシールド」の歯車アイコンをクリック
avast7.png

「スキャンからの除外」をクリック
avast8.png

下までスクロールして「参照...」をクリック
avast9.png

X-Finderをインストールしたフォルダにチェックして「OK(O)」をクリック
avast10.png

「OK」を押せば完了です。
avast11.png

「C:\x-finder\*」になってますが、「C:\x-finder\XF.exe」の方が良いかも。
 

検索機能(X-Finder/Tablacus Explorer)

今回、X-FinderとTablacus Explorerに検索機能を追加しました。
FilterViewってフィルタだと思い込んでいたのですが、ひょんなことから試してみたら、検索だったので、びっくりしました。

この検索はWindows Vista以降しか対応していませんが、Advanced Query Syntax(AQS)に対応していて、例えば、「更新日時:今週」を検索すると今週の項目が検索され、「更新日時:>2014/2/1」とすれば2014年2月1日以降の項目が検索されます。

「更新日時:今週 AND 拡張子:exe」等の複数の項目を検索することもできます。

また、スクリプトを使えば、10日前から今日までの項目を検索する場合はX-Finderでは以下のランチャを実行すればOkです。

Script:JScript
WScript.Exec('Search:更新日時:>' + new Date(new Date() - 86400000 * 10).toLocaleString());


Tablacus Explorerではタイプを「JScript」にしてパスを以下のようにします。

var FV = te.Ctrl(CTRL_FV);
if (FV) {
  FV.FilterView('更新日時:>' + new Date(new Date() - 86400000 * 10).toLocaleString());
}


* 10 の10を変えると何日前からかを変更できます。
 

カスペルスキーの問題

カスペルスキーアンチウイルスを使っているとX-Finderのコンテキストメニューやダブルクリックが遅くなると連絡を貰っていたので、確認のためにWindows XP SP3にKaspersky 2014体験版をインストールしてみました。

報告された方の環境はWindows 8(64ビット)だったので、Windows 8.1 Preview版(64ビット)でテストしようと思ったのですがインストールできなかったので、Windows XP SP3でテストすることに…

テストしてみたら、X-FinderどころかTCM32.exeでもメニューを開くまでに5秒以上掛かってしまいます。
拡張子が「.exe」等のファイルは大丈夫ですが、「.txt」等では遅くなるようです。
カスペルスキーのシステムウォッチャーを無効にすると遅延は解消されます。

調査のためにVisual C++でWin32の新規プロジェクトを作って以下のコンテキストメニューを作る部分を入れてみました。

QueryContextMenuの行で5秒以上掛かってしまいました。


::CoInitialize(NULL);
LPITEMIDLIST pidlFull = ::ILCreateFromPath(L"C:\\readme.txt");
IShellFolder *pSF = NULL;
LPCITEMIDLIST pidlChild = NULL;
SHBindToParent(pidlFull, IID_PPV_ARGS(&pSF), &pidlChild);
IContextMenu *pCM = NULL;
pSF->GetUIObjectOf(NULL, 1, &pidlChild, IID_IContextMenu, NULL, (LPVOID*)&pCM);
HMENU hMenu = CreatePopupMenu();
pCM->QueryContextMenu(hMenu, 0, 1, 0x7fff, CMF_DEFAULTONLY);
DestroyMenu(hMenu);
pCM->Release();
pSF->Release();
::CoTaskMemFree(pidlFull);
::OleUninitialize();

これで引っかかってしまうのであれば、カスペルスキー側の問題!?

こちら側の調整でなんとかなるものなのだろうか...
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。