飛雪散花
眾所周知,在Vista及以后操作系統分區的Windows目錄中,有一個體積較為龐大的文件夾:Winsxs,通常情況下,該文件夾可以占據3GB以上的空間(如圖1),而且該體積會隨著以后安裝的軟、硬件的增多而變大。那么,Winsxs究竟為何物?該文件夾是否可以刪除?如果無法刪除的話,我們又該采取什么樣的策略,盡力減少其對系統分區的占用?答案盡在本文。
Winsxs究竟為何物?
Winsxs文件夾是微軟為保證系統能正常、穩定運行而提供的一個非常重要的文件夾,該文件夾中保存有大量的系統運行所必需的組件,其中最為我們熟悉的就是動態鏈接庫(DLL)。由于在Windows XP及先前的系統中,系統中DLL的版本是唯一的,因此當我們安裝應用程序的時候,時常會看到諸如:“要安裝的xxxx.dll 比系統中原有的要舊,是覆蓋還是保留?”之類的提示,此時,如果我們選擇覆蓋安裝,那么極有可能先前需要使用該DLL的程序會無法正常運行;如果選擇保留新版本,那么,當前安裝的程序就有可能無法運行。而Vista及以后的操作系統完美地解決了這一問題,它會在Winsxs文件夾同時保留多個DLL版本,以便在不同程序需要調用時,能根據實際情況為其提供不同的版本。
同樣,當我們發現硬件新驅動有問題,不得不將其降級到舊版本時,舊版本實際上也是保存在Winsxs文件夾中的。
Winsxs文件夾中的文件不可隨便刪除,否則,極容易因為缺乏相應的組件,導致系統無法正常運行。
可否將Winsxs遷移到別的分區?
答案是肯定的!由于系統分區空間極其寶貴,為了提高系統的運行速度,減少它對系統空間的占用,我們可用下面的方法,將其它遷移到非系統分區。以在Win 8中操作為例。
1.獲取Winsxs文件夾的完全控制權
由于Winsxs是系統屬性的重要文件,所以我們首先要獲取完全控制權,才能對其進行移動操作。
第一步:進入“C:\Windows”目錄,右擊winsxs文件夾,在彈出的右鍵菜單中選擇“屬性”,打開相應的對話框。切換到“安全”標簽,單擊“高級”按鈕,然后在出現的“winsxs的高級安全設置”對話框中單擊“所有者”項右側的“更改”文字鏈接,打開“選擇用戶或組”對話框(如圖2)。
第二步:單擊“高級”按鈕,打開相應的對話框。單擊“立即查找”按鈕,系統中存在的所有系統賬號就會出現在“搜索結果”列表中,選擇當前登錄的賬號,單擊“確定”按鈕(如圖3)。返回上級對話框,連續單擊“確定”按鈕,權限的設置工作就完成了。
2.將文件夾移到非系統分區
第一步:進入http://technet.microsoft.com/en-us/sysinternals/bb897556.aspx頁面,下載PendMoves and MoveFile工具,解壓后,將其中的文件復制到“C:\Windows\System32”目錄中(其中C是系統分區,下同)。
第二步:右擊“開始”按鈕,在出現的菜單中選擇“命令提示符(管理員)”,打開命令提示符窗口,依次輸入并執行以下命令(如圖4。注意:每輸入一行都要回車。其中括號中的內容為命令行注釋。下同):
cd \windows (切換當前路徑為Windows)
mklink winsas.link winsas.moved (建立一個指向Winsas.moved文件的名為Winsas.link的鏈接)
movefile C:\Windows\winsxs C:\Windows\Winsas.moved (將“C:\Windows”目錄下的winsxs文件夾重命名為Winsas.moved)
movefile C:\Windows\Winsas.link C:\Windows\winsxs (將“C:\Windows”目錄下的Winsas.link文件夾重命名為winsxs)
第三步:執行完畢,重啟系統,在任一非系統分區建立起“Windows\winsxs”目錄(如:E:\Windows\winsxs),然后將“C:\Windows\Winsas.moved”目錄下的所有文件復制到新建的目錄下。
第四步:重新建立關聯并刪除Winsas.moved文件夾。以管理員身份運行命令提示符窗口,輸入并執行以下命令:
cd \windows (切換當前路徑為Windows)
rmdir winsxs (刪除名為winsxs的鏈接)
mklink winsxs E:\windows\winsxs (新建一個指向“D:\windows\winsxs”目錄名為winsxs的鏈接)
至此,Winsxs文件夾的遷移工作便告結束。對于系統分區較少的朋友來說,用這種方法可以節省不少空間,同時也可加快系統的運行速度。
如何才能最大限度減少Winsxs的體積?
Winsxs中的文件很重要,但這并不意味著它的所有文件都有用。實際上,由于它會同時保留多個文件版本及其備份,這當中也包括系統補丁備份及老驅動備份等,所以當我們確認當前系統已更新完畢,新的驅動也已正常工作后,我們完全可以將老版本備份清除,僅保留新版本,以最大限度地節省磁盤空間。而要達到上述目的,我們可以用下面兩種方法來實現。
1.如果你是Win7及以后操作系統的用戶
實際上,從Win7系統開始,微軟已經針對Winsxs文件夾中新老版本并存、文件夾體積過于龐大的問題,提供了相應的瘦身補丁,通常在開啟了系統自動更新的前提下,該補丁會通過系統升級,自動安裝到系統中。當然,如果你的系統未啟用自動更新,也可以進入http://www.microsoft.com/zh-CN/download/details.aspx?id=40359頁面手工下載安裝。
第一步:補丁安裝完畢,在Windows資源管理器中右擊系統分區,在彈出的右鍵菜單中選擇“屬性”,打開相應的對話框,單擊“磁盤清理”按鈕(如圖5)。
第二步:在出現的“磁盤清理”對話框中,單擊“清理系統文件”按鈕,打開相應的對話框,勾選“要刪除的文件”列表中的“Windows更新清理”和“已下載的程序文件”項(如圖6),確認后,Winsxs中無用的更新備份和所有下載的文件即會被刪除,高危級安全補丁則會被保留,從而在保證系統安全的同時,在一定程度上減少了Winsxs文件夾對系統空間的占用。
2.如果你是Vista用戶
Vista沒有相應的補丁支持,所以對Winsxs的瘦身工作,只能借助Dism命令來完成。
以管理員身份運行命令提示符窗口,輸入以下命令:
dism /online /Cleanup-Image /StartComponentCleanup /ResetBase
回車后,Winsxs文件夾中所有的老的驅動備份程序和已安裝的非高危級的補丁備份,就會被統統清除了。