2013年6月9日日曜日

ライブラリーの実態とは

ライブラリーから「パブリックのドキュメント」を削除する方法について、調べることがありましたので、簡単に纏めておきます。

基本的には、GUIから操作する手順
ライブラリ: フォルダーを追加または削除する方法
http://windows.microsoft.com/ja-jp/windows-8/add-folders-library

がポピュラーです。

他に手はないのかいろいろ当たってみました。
・レジストリに該当情報がないか確認
 パブリックのドキュメント に関するGUIDが定義されていた。
 ただし、HKEY_CURRENT_USER配下で上記GUIDを含む箇所は見当たらず。
・下記ドキュメントから、ライブラリーが論理的なものであることを確認
 第 8 章: Windows 7 ライブラリとシェルの使用
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ff934858.aspx

・ライブラリーの物理パスを下記ドキュメントから確認
 以下のドキュメントをFOLDERID_DocumentsLibraryで検索すると
 KNOWNFOLDERID
http://msdn.microsoft.com/en-us/library/dd378457(v=VS.85).aspx

%APPDATA%\Microsoft\Windows\Libraries\Documents.library-ms
が物理パスであると定義されていました。

ということで、ライブラリーはレジストリにはなくて、特定の物理パスに置かれている何かであることがわかりました。
というわけで%APPDATA%\Microsoft\Windows\Libraries\を開いてみます。
赤枠内が全く同じであることが見て取れます。
library-ppath

試しにドキュメントをメモ帳で開いてみます。すると
document-library_ms
XMLファイルでした。これがDocuments.library-msということですね。こちらにもXMLファイルであるとの記載がありました。

MSDN マガジン > ホーム > アーカイブ > 2009 > MSDN マガジン June 2009 > Windows 7 徹底解剖: ライブラリの紹介
内部ライブラリ
http://msdn.microsoft.com/ja-jp/magazine/dd861346.aspx#id0370055


ファイルによっては、以下のGUIDが含まれているようです。
・{7D49D726-3C21-4F05-99AA-FDC2C9474656} は、
 http://msdn.microsoft.com/ja-jp/library/windows/desktop/dd798386(v=vs.85).aspx
 に記載のある通りドキュメントフォルダーを表すGUIDです。
・{ED4824AF-DCE4-45A8-81E2-FC7965083634}は、
 http://msdn.microsoft.com/en-us/library/dd378457(v=VS.85).aspx
 に記載のある通り"パブリックのドキュメント"をを表すGUIDです。

内部ライブラリにひな形のXMLがあるので、もしやと思いテンプレートを
document-library_ms-test01
一旦テキストファイルとし保存しました。
document-library_ms-test02

拡張子をtxtからlibrary-msに変更してみます。
document-library_ms-test03
document-library_ms-test05
document-library_ms-test04
と拡張子が消えました。

で、ダブルクリックして開いてみると[フォルダーの追加]ボタンがあるので、
document-library_ms-test06
D:\LIBを追加してみました。
document-library_ms-test07

ジャンクションポイントとは全く異なる仕組みですが、仮想的にマウントされています。
でこのlibrary-msファイルを%APPDATA%\Microsoft\Windows\Libraries\にコピーしてみます。
左ペインのライブラリに新しいDocument2が増えました。
document-library_ms-test08

当然のことながら、D:\LIBにポイントされています。
document-library_ms-test09

ライブラリは、こういう拡張性を持っているわけです。

応用例としては、先ほど作ったDocument2のファイル名を変更してダウンロードとします。でプロパティを編集して
document-library_ms-test10

ライブラリのほうにもダウンロードを表示させれるということですね~
document-library_ms-test11

なかなか面白い仕組みです!

0 件のコメント:

コメントを投稿