最近新配了臺主機(jī),在老板的極力推薦下,上了塊 SSD 當(dāng)系統(tǒng)盤,那速度,果真是一個大四個叉,爽?。。?div id="moiyehiw" class='imgcenter'>
上網(wǎng)查了查,發(fā)現(xiàn)使用 SSD 還有不少講究,主要目的是為了延長硬盤的使用壽命,其中有關(guān)轉(zhuǎn)移用戶配置文件并利用 mklink 命令進(jìn)行文件夾鏈接的文章引起了我的興趣。由于以前 N 次重裝系統(tǒng)留下的備份文件實(shí)在太亂,而且重復(fù)的文件太多,所以準(zhǔn)備仔細(xì)整理一番,然后用 mklink 將用戶文件設(shè)置到其它盤去。經(jīng)過幾天的折騰,終于成功將 C:\Users 中的用戶文件夾給鏈接到了 D 盤了,其間發(fā)生了各種狀況,在此和大家分享下經(jīng)驗(yàn)和教訓(xùn)。
折騰之前,先普及下基礎(chǔ)知識:
Windows (Vista/Win7/Win8) 自帶的 mklink 命令可以設(shè)置文件和文件夾鏈接,也叫接合點(diǎn)或解析點(diǎn),可以通過 dir /a:l 進(jìn)行查看。
如圖中所示,文件或文件夾前具有 <JUNCTION> 標(biāo)記的,就是接合點(diǎn)。
Junction:連接點(diǎn)或接合點(diǎn),圖標(biāo)類似快捷方式,當(dāng)用戶對其進(jìn)行訪問時,讀寫操作實(shí)際上是附加在接點(diǎn)所指向的文件或文件夾上的。
比如:Win7 中的 "C:\Documents and Settings",用戶目錄中的 "Application Data"、"My Documents" 等。
mklink 是用來創(chuàng)建 Junction 的命令,具體使用方法請參考:符號鏈接、Mklink 詳解 和 Windows 7 中的 mklink 命令
好吧,Let's 折騰
本文以 Administrator 作為示例用戶,要做的就是將用戶配置目錄 C:\Users\Administrator 鏈接到 D:\Admin。
操作共分3個步驟:
1、用 WinPE 復(fù)制 C:\Users\Administrator 文件夾到 D:\Admin 中。
我的系統(tǒng)是 Win8,曾使用 robocopy 命令來復(fù)制用戶目錄,不幸的是未能成功:
- robocopy "C:\Users\Administrator" "D:\Admin" /copyall /e /xj
總結(jié)下失敗的原因:
a、本打算偷懶,將 Administrator 中的 Junction 一起復(fù)制到 D 盤,所以去掉了 /xj 參數(shù)。后果是出現(xiàn)了循環(huán)復(fù)制,原來 Application Data 指向的目錄存在循環(huán)引用。仔細(xì)想想,因?yàn)橐苿恿?Administrator 文件夾,原有 Juncation 的目標(biāo)也就失效了,所以必須添加 /xj 參數(shù)。
b、加上 /xj 參數(shù)后,復(fù)制成功,但提示有的文件夾無訪問權(quán)限,不過我沒理會。事實(shí)證明,這是不對的,因?yàn)閺?fù)制完成后,C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Libraries 無權(quán)刪除,這還讓我怎么建立 Junction 啊~~
c、利用系統(tǒng)自帶的用戶配置文件管理進(jìn)行復(fù)制、刪除,也出現(xiàn)了無權(quán)訪問的狀況
d、據(jù)說安全模式可以搞定,可 Shift+F8 都按陷下去了,也沒能進(jìn)入 Win8 的安全模式,真尼瑪丟人??!
最終我還是選擇了 WinPE 環(huán)境復(fù)制配置文件,而且一次搞定。
友情提醒:
Windows 8 OS,建議用 Administrator 賬號登錄系統(tǒng),并點(diǎn)開應(yīng)用商店逛逛,是否下載應(yīng)用倒無所謂,否則,折騰完后你會驚喜的發(fā)現(xiàn)無法從應(yīng)用商店中安裝應(yīng)用了!
2、重命名 C:\Users\Administrator 和 D:\Administrator 文件夾。
為了保險起見,C:\Users\Administrator 文件夾不要刪除,可以重命名為 Administrator.BAK
D:\Administrator 重命名為 Admin
3、利用 mklink 建立文件夾鏈接:
- mklink /j "C:\Users\Administrator" "D:\Admin"
注:在 WinPE 中也能使用 mklink 命令,可由于缺少環(huán)境變量的設(shè)定,所以進(jìn)入系統(tǒng)目錄才能執(zhí)行。
4、在 D:\Admin 文件夾中建立如 "Application Data"、"Cookies" 等 Junction 接合點(diǎn)。
讓我們用 dir /s /a:l 命令查看下 Administrator 文件夾中的所有 Juncation:
由于目錄中的 Junction 比較多,而且分散在不同的子目錄中,所以我編寫了一個批處理來完成這項(xiàng)工作。為了和原用戶目錄中的 Junction 保持一致,又在批處理中增加了 attrib 和 icacls 命令,作用是分別為這些 Junction 設(shè)置系統(tǒng)、隱藏等屬性,并添加了拒絕用戶訪問的權(quán)限。
上腳本咯~~!
- d:
- cd\
- cd Admin
-
- rem mklink
-
- mklink /j "Application Data" "AppData\Roaming"
- mklink /j "Cookies" "AppData\Roaming\Microsoft\Windows\Cookies"
- mklink /j "Local Settings" "AppData\Local"
- mklink /j "My Documents" "Documents"
- mklink /j "NetHood" "AppData\Roaming\Microsoft\Windows\Network Shortcuts"
- mklink /j "PrintHood" "AppData\Roaming\Microsoft\Windows\Printer Shortcuts"
- mklink /j "Recent" "AppData\Roaming\Microsoft\Windows\Recent"
- mklink /j "SendTo" "AppData\Roaming\Microsoft\Windows\SendTo"
- mklink /j "Templates" "AppData\Roaming\Microsoft\Windows\Templates"
- mklink /j "「開始」菜單" "AppData\Roaming\Microsoft\Windows\Start Menu"
-
- mklink /j "AppData\Local\Application Data" "AppData\Local"
- mklink /j "AppData\Local\History" "AppData\Local\Microsoft\Windows\History"
- mklink /j "AppData\Local\Temporary" Internet Files "AppData\Local\Microsoft\Windows\Temporary Internet Files"
-
- mklink /j "AppData\Roaming\Microsoft\Windows\Start Menu\程序" "AppData\Roaming\Microsoft\Windows\Start Menu\Programs"
-
- mklink /j "Documents\My Music" "Music"
- mklink /j "Documents\My Pictures" "Pictures"
- mklink /j "Documents\My Videos" "Videos"
-
- rem attrib
-
- attrib +s +h +i "Application Data"
- attrib +s +h +i "Cookies"
- attrib +s +h +i "Local Settings"
- attrib +s +h +i "My Documents"
- attrib +s +h +i "NetHood"
- attrib +s +h +i "PrintHood"
- attrib +s +h +i "Recent"
- attrib +s +h +i "SendTo"
- attrib +s +h +i "Templates"
- attrib +s +h +i "「開始」菜單"
-
- attrib +s +h +i "AppData\Local\Application Data"
- attrib +s +h +i "AppData\Local\History"
- attrib +s +h +i "AppData\Local\Temporary"
-
- attrib +s +h +i "AppData\Roaming\Microsoft\Windows\Start Menu\程序"
-
- attrib +s +h +i "Documents\My Music"
- attrib +s +h +i "Documents\My Pictures"
- attrib +s +h +i "Documents\My Videos"
-
- rem icacls
-
- icacls "Application Data" /deny Everyone:(S,RD)
- icacls "Cookies" /deny Everyone:(S,RD)
- icacls "Local Settings" /deny Everyone:(S,RD)
- icacls "My Documents" /deny Everyone:(S,RD)
- icacls "NetHood" /deny Everyone:(S,RD)
- icacls "PrintHood" /deny Everyone:(S,RD)
- icacls "Recent" /deny Everyone:(S,RD)
- icacls "SendTo" /deny Everyone:(S,RD)
- icacls "Templates" /deny Everyone:(S,RD)
- icacls "「開始」菜單" /deny Everyone:(S,RD)
-
- icacls "AppData\Local\Application Data" /deny Everyone:(S,RD)
- icacls "AppData\Local\History" /deny Everyone:(S,RD)
- icacls "AppData\Local\Temporary" /deny Everyone:(S,RD)
-
- icacls "AppData\Roaming\Microsoft\Windows\Start Menu\程序" /deny Everyone:(S,RD)
-
- icacls "Documents\My Music" /deny Everyone:(S,RD)
- icacls "Documents\My Pictures" /deny Everyone:(S,RD)
- icacls "Documents\My Videos" /deny Everyone:(S,RD)
將上面的命令行保存為 bat 文件,然后在 cmd 命令行中執(zhí)行就可以啦~
希望這個腳本對大家有用處。
其實(shí),我自己使用的是另一個方法,修改了注冊表里
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[User SID]\ProfileImagePath
中的值,這個方法弊端比較多,建議大家不要隨意使用。