・これは何を表しているのか
・このマークがついていることによって何か問題が発生するか
・このマークを消す方法があればその方法
・そもそもマークをつけずに圧縮することは可能か
ちなみにZIPファイルの作成にはPEARのArchive::Zipを使用しました。
require_once("Archive/Zip.php");
$objZip = new Archive_Zip("zip.zip");
$objZip->create("zip.txt");
なお、テスト環境はこんな感じです。
Windows XP Pro SP3
PHP 5.2.9
zlib 1.2.3
Zip.php 1.2
解凍ソフト Lhaplus 1.57、およびWindowsの標準機能(Zipフォルダからファイルをドラッグして解凍した場合のみ)
※+lhacaや解凍レンジを使用した場合には発生しませんでした。
このマークは、ファイルのデータがオフラインの記憶装置へ移動されたことを示す、Windows標準のマークらしいです。ファイルの属性にFILE_ATTRIBUTE_OFFLINEが設定されていると表示されます。
FILE_ATTRIBUTE_OFFLINEは、「リモート記憶域」サービスが利用する属性なので、リモート記憶域を使用していないパーティションでは、何も影響は無いはずです。
このマークを消すには、ファイルのFILE_ATTRIBUTE_OFFLINE属性をクリアすればOKですが、エクスプローラ等からそのような操作はできないので、コメント欄で書かれているように、ファイルをコピーするのが簡単だと思います。
FILE_ATTRIBUTE_OFFLINE属性が付いてしまう原因は、Zip.phpのバグです。
Zip.phpの1353行目の
$p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010);
を、
$p_header['external'] = (is_file($p_filename)?0x00000020:0x00000010);
のように変更すれば、解凍したファイルにマークは付かなくなります。
(同様に1452行目と2507行目の0x41FF0010も0x00000010に変更した方が良いかもしれません)
PCにインストールしているシェルエクステンションが反応して、左下のアイコンを表示していると思います。
レジストリ(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers)に何が登録されているかを調べると、左下のアイコンを付けているアプリのヒントが得られると思います。
TortoiseSVNのアイコンオーバーレイが表示されない - espresso3389の日記
もし、ShellIconOverlayIdentifiers配下のレジストリキー名だけでは、アプリが特定できない場合は、各キーに登録されているデータ({750fdf0e-2a26-11d1-a3ea-080036587f03}など)をレジストリ内検索すれば、関連付けされているDLL名やシェルエクステンション名が見つかります。
ということは大して重要なものではないのかなぁと思うんですが、やっぱり気持ち悪い。
引き続き、回答よろしくお願いいたします。
フォントキャッシュの破損が原因ではないか、という意味です。
Outlookは直接関係ありません。
Outlookはインストールされていますか?
念のため、アイコンを確認しようと思いましたが方法がわかりませんでした。
Expressにも「履歴項目」の機能があるのでしょうか?
フォントキャッシュの破損が原因だとして、ファイルのコピーで直るようなものなんですかね。
1回目の回答は0ポイントとしてください。
> このマークは、ファイルのデータがオフラインの記憶装置へ移動されたことを示す、Windows標準のマークらしいです。
そういえばレジストリを調べてるとき「Offline Files」というのが出てきましたが、それのことですかね。
関係ありそうで気になったんで調べてみたんですが、よくわからなかった…。
まぁ、どちらにしてもそれだけでは解決には至らなかったわけで、今回は5ポイントとさせていただきました。
そういえば昔つかってた環境では「フォントキャッシュの破損」が頻繁に起こってたなぁ…
そんなことすら忘れてたので、なんだか懐かしい気持ちになりました。
なりましたが、やはりこちらも5ポイントとさせてください。
以上です。
お二方、ご回答ありがとうございました!