天天看點

Windows中的默默無聞大英雄----虛拟存儲

本文隻是提供一種思想,沒有其他意圖。不過這隻是Windows相容方案的一種措施,肯定還有很多措施。感興趣的可以看看,把玩把玩。

聽見别人說起“虛拟化”,還以為是Xen、VMware、Hyper-v等虛拟化軟體提供的虛拟化技術。結果恰恰相反,今天聽到的虛拟化卻是Windows的檔案虛拟化和系統資料庫虛拟化技術(按照微軟官方說明後面都使用“虛拟存儲(VirtualStore)”所代替。虛拟存儲也不能了解為虛拟磁盤(VHD,Virtual Hard Disk))。不過在這裡與其說它們是一種技術還不如說是一種思路。

我認為這種思路的核心就是如何保持Windows系統的整潔性和規範性。先别急說什麼是檔案虛拟化或者什麼是系統資料庫虛拟化,先詳細說說這種技術的由來比較好。

整潔性和規範性,這兩個詞用在這裡都是我杜撰出來的,不過有沒有效大家看看再做評論。所謂的完整性就是指如何保持Windows系統目錄(%SystemRoot%)和關鍵目錄如“%SystemRoot%\System32”、“%SystemRoot%\SysWoW64”等不受到其他應用程式的改變,如應用程式向%SystemRoot%寫入(“寫入”操作的結果當然有可能是“覆寫”)配置檔案或者dll(動态連結庫)檔案等。規範性是指提醒程式開發人員,不要設計一些與Windows系統開發理念或方法相忤逆的程式來破壞系統降低系統的可用性和可維護性,如不要設計将上述檔案寫入那些關鍵目錄中。Windows開發人員更希望應用程式也能實作多使用者的特性,即同一台計算機中的不同的使用者使用不同的配置檔案而使得不同的使用者不會影響其他使用者的設定和資料,盡管現在大多數程式已經這樣設計。從剛才的這句話也可以看出這個技術其實隻不過是處理相容性程式的一種方法。

那麼這種方法到底是如何實作的呢?答案很有意思,是檔案重定向。檔案重定向其實說起來并不複雜,就像快捷方式或者PowerShell中的快捷指令一樣,通過通路連結檔案或目标檔案的别名(alias)就能真正的使用目标檔案或程式。

說這麼多概念有什麼用呢?倒也沒什麼用。現在最新的Windows7 Enterprise已經隐去了在資料總管工具欄上的“相容性檔案”的按鈕,這讓它變得更加默默無聞起來。但如果使用者細心依然能發現它的存在。它就在“C:\User\UserName\AppData\Local\VirtualStore\”檔案夾下。該檔案專門用于儲存重定向内容的根檔案夾。對于每一個被重定向的檔案都在這個檔案下的對應檔案夾裡找到。

這個檔案夾下可以重定向的檔案位置有:

%SystemRoot%

%SystemRoot%\System32\

%SystemRoot%\SysWoW64\

%SystemRoot%\Program Files\

%SystemRoot%\Program Files (X86)\

如同前面所說,這個技術隻對部分相容性程式起作用,是以同樣也面臨着問題。這種機制隻能使用标準權限運作安裝程式時才有用,對于使用管理者權限安裝的程式沒有用。

同樣的系統資料庫虛拟化也就好了解了!其重點保護的鍵是HKEY_LOCAL_MACHINE\Software。感興趣的話可以到微軟官方網站的TechNet Library檢視相關技術文檔。

本文轉自 urey_pp 51CTO部落格,原文連結:http://blog.51cto.com/dgd2010/1095203,如需轉載請自行聯系原作者

繼續閱讀