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