人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでZIPファイルを作成すると、解凍したアイコンの左下に時計のようなマークが表示されます。

・これは何を表しているのか
・このマークがついていることによって何か問題が発生するか
・このマークを消す方法があればその方法
・そもそもマークをつけずに圧縮することは可能か

ちなみに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や解凍レンジを使用した場合には発生しませんでした。

1258098482
●拡大する

●質問者: Numeric
●カテゴリ:コンピュータ
✍キーワード:Pear PHP txt Windows Windows XP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● makeworld
●5ポイント

PCにインストールしているシェルエクステンションが反応して、左下のアイコンを表示していると思います。

レジストリ(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers)に何が登録されているかを調べると、左下のアイコンを付けているアプリのヒントが得られると思います。

TortoiseSVNのアイコンオーバーレイが表示されない - espresso3389の日記

もし、ShellIconOverlayIdentifiers配下のレジストリキー名だけでは、アプリが特定できない場合は、各キーに登録されているデータ({750fdf0e-2a26-11d1-a3ea-080036587f03}など)をレジストリ内検索すれば、関連付けされているDLL名やシェルエクステンション名が見つかります。

◎質問者からの返答

アイコンをつけているのは間違いなくPEARのZipライブラリ(もしくはzlib)なんです。


今回の質問の趣旨は、「アイコンをつけた犯人は誰だ!?」ではなく

「このアイコンは何だ!?」ということなので、ご理解願います。

(確かにそういうアプローチもありですが、今回は…ということで)


2 ● _nakamine
●5ポイント

http://office.microsoft.com/ja-jp/outlook/HA101324711041.aspx

より

履歴項目 (履歴項目 : Outlook に記録された作業や行動を表します。履歴項目は、アイテムへのショートカットとして記録されます。履歴項目とほかのアイテムを見分けるには、アイコンの左下に時計の絵が表示されているかどうかを確認します。)

http://homepage2.nifty.com/winfaq/fontstrouble.html

これで解決しますか?

◎質問者からの返答

Outlookの話ではありません…ので、解決しませんでした。


3 ● makeworld
●200ポイント ベストアンサー

このマークは、ファイルのデータがオフラインの記憶装置へ移動されたことを示す、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に変更した方が良いかもしれません)


GetFileAttributes 関数

ZIP2 File Structure - FATR Chunk

◎質問者からの返答

すごい!すごい情報のような気がする!

とりあえず試してみます!

---

できました!にっくきあいつを消すことに成功しました。

副作用があるのかないのかもまったくわかりませんが、

1452行目と2507行目のあいつらも変更してやりました。


> 0xFE49FFE0:0x41FF0010

この値が何を表してるのかもわかっちゃうと嬉しいんですが、贅沢ですかね。

とにかくこれで解決です。ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ