スポンサーサイト

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

風見鶏の寝言096

「INI」



コンピュータのエクスプローラでは、好みのフォルダをカスタマイズできる。

そして、フォルダの表示アイコンを好きなアイコンに変えることができる

このことは割と広く知られているだろう。

エクスプローラ上で、
フォルダアイコンを右クリック
→プロパティ(R)
→タブのカスタマイズ
アイコンの変更(I)
→好きな場所(ディレクトリ)からアイコン(.ico)を選択する


ini001.jpgini002.jpg

すると、カスタマイズしたフォルダの中にdesktop.iniという拡張子のついた隠しファイルが自動生成される。
ini003.jpg


※これが表示されない方は、一度ALTキーを押してメニューバーを表示させてから、ツール→フォルダオプション→タブの表示→すべてのファイルとフォルダを表示するにチェックを入れる必要がある。
ini004.jpgini005.jpg

このdesktop.iniファイルは、このファイルが入っているフォルダに関するカスタマイズ情報を貯蓄するものである。

desktop.iniファイルは、メモ帳で開くことができる。

アイコンのカスタマイズをした場合、開くと2行だけ記載されているはずである。
例えば以下のようなものである。

[.ShellClassInfo]
IconResource=C:\Windows\system32\SHELL32.dll,13



簡単に説明すると、1行目は題名。

2行目は、このフォルダのアイコンは、以下のアドレス(Cドライブ→Windowsフォルダ→system32→SHELL32.dll)に収納されているアイコン一覧から引用してくることを示す。

2行目の最後に書かれている数字は、引用先の場所に複数アイコンファイル(.ico)がある場合に、何番目のアイコンを使うかを示すものである。(アイコンが1個しかないときは、この数字は0になるため、13とは14番目のアイコンを指す)


ここまでは、特にdesktop.iniの構造を知らずとも自動的に調整されているため何の問題もない。

しかし、例えば特にお気に入りのフォルダに目立つよう自作のアイコンを使用したい等となる場合には、難が生じる。

問題は例えばこんな場合に生じる。

あるUSBフラッシュメモリの中にネコ画像のお気に入りフォルダ(仮にフォルダ名:cats)があるとする。
そして、このcatsフォルダに似合うようなネコの絵をしたアイコンnyanko.icoというものをこしらえたとする。
そこで、このフラッシュメモリをどのPCに接続したときでもcatsフォルダがnyanko.icoになるようにしたい


※作成したい方へ参考
ini006.jpg

アイコンはどこかアイコンのあるフォルダから引用してくるのであるから、参照先に存在していなければならない。

そのため、フラッシュメモリ内のcatsフォルダのアイコンを自作アイコンnynko.icoにしたいならば、少なくともそのフラッシュメモリ内のどこかになければならない。

そうでないと、他のPCに接続したときにはアイコンが存在せず、引用できなくなってしまう。

そこで、catsフォルダの中にnyanko.icoを保存して、家のノートPCで上述のようなカスタマイズをしたとする。

catsフォルダ内に自動生成されたdesktop.iniをメモ帳で開くと例えば以下のようになる。

[.ShellClassInfo]
IconResource=E:\cats\nyanko.ico,0



すなわち、このノートPCではこのフラッシュメモリはEドライブというドライブレターになっており、そのEドライブ内のcatsフォルダ内にあるnyanko.icoを引用していると記されている。

ところが、他のPCに接続した場合にはこのフラッシュメモリが別のドライブレター(例えばFドライブ)として認識されるときがある。

Fドライブと認識された場合、desktop.iniは必死にEドライブを探すがそれは存在しないか、全く違う別のドライブを指すものであることになる。

すると、Eドライブにnyanko.icoが存在しないため、カスタマイズがエラーとなり、自動的にデフォルト(初期)の味気ないアイコンに戻ってしまう

Fドライブとして接続された状態で、再び上述おアイコンカスタマイズを行えば、desktop.iniは上書きされ、以下のように変わる。

[.ShellClassInfo]
IconResource=F:\cats\nyanko.ico,0



すると、そのPC上ではcatsフォルダはnyanko.icoとして表示されるが、元のノートPCでは再びEドライブとして認識されるため、新たにFドライブを指定するdesktop.iniでは再度エラーとなり、nyanko.icoは表示されない。

では、フラッシュメモリが何というドライブレターとして認識されるかを問わず、catsフォルダを自作アイコンでカスタマイズする方法はないのか?

ググってみたものの、案外見つからなかったため、microsoftコミュニティに質問を投げてみた。

有り難いことに、ご教示いただけたので、紹介したい。
※参考:ソースはこちら

上述の例のようにアイコンを引用するアドレスを全部書くのを絶対パスという。

これに対して、全部は指定せず、複数のドライブ内に同じフォルダがあれば全部参照する場合には相対パスが使われる。

ドライブレターはぶれるけど、その中のcatsフォルダ以降が確定している場合には、相対パスが有効らしい。

つまり、上の例でいえば、以下のようにdesktop.iniの記述を上書きすればよい。

[.ShellClassInfo]
IconResource=E:\cats\nyanko.ico,0



[.ShellClassInfo]
IconResource=\cats\nyanko.ico,0



結果だけ言えば、アドレスのドライブレター部分をまるまる飛ばしてしまう手が使える。

こうすると、catsフォルダが入っているフラッシュメモリが何というドライブレターと認識されようとも、各ドライブからcatsフォルダを検索し、その中にあるnyanko.icoを引用できる。

これは、別のドライブに同名のフォルダがあっても機能する。

例えば、Cドライブにcatsフォルダがあり、Eドライブにもcatsフォルダがある場合でも、nyanko.icoがEドライブのcatsフォルダにしか入っていないならば、そこから引用をしてくる。

けっこう便利かもしれない。
関連記事
スポンサーサイト

トラックバック一覧

コメント一覧

コメントの投稿

名前

タイトル

メールアドレス

URL

本文

パスワード

非公開コメント管理者にだけ表示を許可する

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