WinSxS

WinSxS

WinSxS裡面的檔案是不可刪除的。

WinSxS下有很多重要的組件,版本也很繁雜,為了保證Windows的正常運行,請確保這些檔案一個都不能少。這些檔案支撐著mscorwks.dll,沒有它們,mscorwks也無法載入。強行刪除後可能只有以安全模式能勉強進入Windows,Windows也就廢了。

安全的做法是使用系統自帶的釋放磁碟空間工具或使用第三方工具,清除service pack備份。

基本信息

說明

支持COM和共享DLL的隔離

Windows 系列系統(這裡包括XP、Vista、Win7、win8)在“Windows”目錄下提供了一個名為“WinSxS”(Windows Side-by-Side)的資料夾。系統使用這個資料夾存儲各個版本的Windows組件,減少因為動態程式庫(Dynamic Link Libraries,DLL)引起的配置問題(DLL hell)。組件的多個版本都存儲在這個資料夾中。Windows XP允許Win32 API組件和應用程式使用與這些程式在測試時所使用的版本完全一致的Microsoft 組件版本,並且不受其它程式或者作業系統升級的影響。Windows 通過XML檔案來實現這一功能,這些XML檔案保存了有關應用程式配置的元數據,例如COM類、接口和類型庫。

作用

Windows XP

Windows XP的一個重要革新就是引入了隔離組件(Isolated Components)和並列共享(side-by-side sharing)功能。作為原來Windows中經常出現的DLL衝突問題的解決方案,Microsoft 強烈建議應用程式使用組件隔離和並列共享技術來解決DLL調用的問題。微軟在ComCtl version 6中使用了並列共享處理,證明隔離組件和並列共享是未來Windows的發展方向。

在使用隔離組件和並列共享模式下,一個組件的很多個不同版本被同時安裝在系統中。注意,是"同時"安裝在系統中。在原來的Windows中,系統中一個組件或者是DLL只能有一個版本,因此在安裝應用程式的時候,我們經常看到這樣的對話框:"要安裝的xxxx.dll 比系統中原有的要舊,是覆蓋還是保留?"。這個問題的確不好問答,因為安裝舊的DLL吧,那么原來使用新的DLL的應用程式可能無法正常運行;如果不安裝,那么新的應用程式也可能無法正常運行。這真是個兩難的問題。

Windows XP使用隔離組件和並列共享較好地解決了這個問題。由於系統中可以有一個DLL或組件的多個版本同時存在,應用程式在運行的時候可以選擇使用自己在設計或開發的時候經過嚴格測試的組件版本。這樣可以避免應用程式被迫調用不同版本的DLL或組件而可能導致的不可預知的錯誤。

在Windows XP中,隔離組件和並列共享主要是通過程式清單(manifest)來實現的。通過程式清單,一個應用程式完整地定義了自己運行時需要調用的DLL或組件的版本。Windows XP根據程式清單,保證系統中一個應用程式的升級或刪除不會影響到其它的程式需要使用的DLL或組件。所以我們看到,隔離組件和並列共享可以保證系統的安全和應用程式的安全。

(元數據指程式需要的基本的DLL調用、組件支持、接口定義等),例如COM 類、接口定義和DLL庫定義等。清單檔案有兩類:應用程式清單檔案,用來描述應用程式所需要的所有元數據;裝配清單檔案,用來描述單個組件的安裝。

一個應用程式可以在程式清單中明確地指出自己包含的所有程式部件如何安裝在系統中。一個應用程式包含很多基本的元素,例如接口定義、幫助檔案、不同版本的組件、系統配置信息等。所有的這些元素,可以根據程式清單分成兩類:公有的和私有的。公有元素可以被計算機上安裝的其他應用程式使用,他們被安裝在Windows XP的WinSxS目錄中。私有元素只能被包含他們的應用程式使用,安裝在應用程式獨有的目錄下。

Windows Vista/7/8

Microsoft 在 Windows Vista/ Windows 7 裡面大量使用了NTFS文檔系統的特性之一的:硬連線(Hard Link)來實現WinSxS機制!

硬相連是NTFS文檔系統特有的屬性之一,在Linux下面,也有類似的機制。硬相連適用於在同一個卷的文檔級別,硬相連是不能跨卷的。

Windows Vista / Windows 7自帶了創建硬相連的命令:mklink.exe,利用這個命令,我們可以給指定的文檔創建硬相連。

常常看到有人抱怨,Windows\WinSxS目錄占用了太多的空間,裡面常常發現有同名的文檔,而且這些同名的文檔在 Windows\System32 目錄下面也有存在,這是為啥呢?其實這就是硬相連導致的。

Microsoft為啥這么貧苦搞這個呢?其實如此對系統的穩定性的增加非常有好處。

同樣的文檔,只必要維護硬相連干係,不必要進行多重的拷貝,如此可以節省硬碟空間。

如果涉及文檔更新,只必要先在WinSxS 目錄裡面下載好一個新版本,然後改正 Windows\System32 下面同名文檔的硬相連干係,從舊版本的硬相連指向新版本的硬相連,如此就可以或許快速的完成文檔的更新工作,而不必要進行文檔的複製,速度也會快不少

補丁卸載也是一樣的,只必要把硬相連指向改為舊版本就可以了,沒有文檔替換的問題。而且建立了硬相連干係的文檔之間的改正是同步的,所以只要有一方被改正了,另一方也會得到改正。

WinSxS WinSxS

當然,Windows7作業系統中的winsxs檔案屬性中也自帶壓縮資料夾的功能:右鍵winsxs資料夾▶屬性▶高級▶勾選壓縮選項▶確定▶套用。

相關詞條

熱門詞條

聯絡我們