轉載自:
http://moonwulk.blogspot.com/2010/06/windows-7-userprofile.html
在實測多種不同方法后綜合一個可行而且頗為滿意(起碼沒有踫到死當或缺陷), 過程快捷順利, 只要注意權限問題, 加上一些手動小修改罷了。
認識 Windows 7 系統的本機賬號目錄 UserProfile 位置架構如下:
-
賬號默認目錄是 C:\Users\
-
共享賬號目錄是 C:\Users\Public\
-
默認配置賬號目錄(隱藏)是 C:\Users\Default\
-
個人用戶賬號目錄是 C:\Users\%用戶名稱%\
網上流傳眾多方法也有不小誤判或缺陷:
-
微軟的輕松傳輸(Easy Transfer)當然就不能輕松地將用戶賬號目錄在系統 C:\Users\ 目錄遷移到其他硬盤機, 也不用妄想啊
-
將用戶賬號目錄遷移后利用 mklink 指令以 junction point(NTFS) 的連結方式使用, 此方法有不良的嚴重后果(原因不明, 可能是 junction 的權限問題), 在登入后使用到 Windows 某些個人配置功能時(例如: 桌面背景..等等)會令整個 GUI 接口死當或超緩慢, 部分軟件(例如: Outlook)在設定后使用時出狀態
-
將用戶賬號目錄在 File Explorer 接口中每一個都更改 Location 位置, 實在太過手動(煩死啊), 而且用戶賬號子目錄的 AppData 賬號配置數據(及臨時文件)都仍然使用 C: 系統碟, 此方法只是適合沒有(或不能使用)系統管理員權限的個人環境臨時的簡易方案而已
-
將系統機碼 HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\ProfileList 的 Default, Public, ProfileDirectory 都修改為其他硬盤機位置, 此方法是可行的亦是針對本機的完全修改, 不過...已經存在 C: 的系統管理員賬號還是需要手動遷移及修改系統機碼
遷移個人用戶賬號目錄 C:\Users\%用戶名稱%\ 到其他硬盤機無論任何情況必需先做好系統完全備份!!
實測應用安裝及格化准備好的硬盤(及分割區), 如圖 e: 硬盤

實測配置 Windows 7 的用戶賬號 UserProfile 目錄位置實作步驟:
1. 登入系統管理員賬號
2. 修改系統機碼將新增用戶賬號目錄指向 e: 硬盤, 以 系統管理員身分執行 注冊表編輯器(regedit):
尋找機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
如果需要將所有用戶賬號目錄(包括默認配置、共享及新增賬號)全部遷移到 e: 硬盤的話, 修改三個預設機碼如下:
Default 預設由 %SystemDrive%\Users\Default 修改為 e:\Default
ProfileDirectory 預設由 %SystemDrive%\Users 修改為 e:\
Public 預設由 %SystemDrive%\Users\Public 修改為 e:\Public
如果只需要新增賬號遷移到 e: 硬盤的話, 只需要修改"一個"預設機碼如下:
ProfileDirectory 預設由 %SystemDrive%\Users 修改為 e:\
實測遷移 Windows 7 的用戶賬號 UserProfile 目錄位置實作步驟:
1. 登入 系統管理員 賬號
2. 以 系統管理員身分 執行 cmd 命令提示字符(Command Prompt)
3. 復制用戶賬號目錄(例如: Doggie賬號)到指定位置(e:)硬盤, 在 命令提示字符 內 執行:
robocopy c:\Users\ e:\ /e /copyall /xj /xf c:\Users\desktop.ini /xd "Default" "Public" "%其他用戶賬號%"



以上的復制方法以排除 exclude(/xd) %其他用戶賬號目錄% 及不遷移的 Default 及 Public 賬號目錄
好處是無需煩惱地手動修改目錄讀寫權限, 與原來的賬號目錄權限一模一樣, 而 /xj 是不復制 junction point 連結(否則無限復制 loop, 必需手動再建立賬號目錄內 16個 junction)
4. 在"已遷移"的 e: 硬盤用戶賬號目錄內再建立 16個 junction(兼容舊軟件的目錄架構)
查看舊的 junction 目錄如下(例如: Doggie 賬號):
dir c:\Users\Doggie /al /s
手動再建立 16個 junction 到 e: 硬盤(例如: Doggie 賬號), 以 系統管理員身分 執行 cmd 命令提示字符(Command Prompt)
在 命令提示字符 內執行:
e:
cd Doggie
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 "Start Menu" "AppData\Roaming\Microsoft\Windows\Start Menu"
mklink /j "Templates" "AppData\Roaming\Microsoft\Windows\Templates"
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 "Documents\My Music" "Music"
mklink /j "Documents\My Pictures" "Pictures"
mklink /j "Documents\My Videos" "Videos"
5. 修改系統機碼將用戶賬號目錄指向 e: 硬盤, 以 系統管理員身分 執行注冊表編輯器(regedit):
展開機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
在其中參找一條長機碼包含有用戶賬號名稱, 將其 ProfileImagePath 機碼由 c:\Users\%用戶賬號名稱% 改為 e:\%用戶賬號名稱%(如圖)


修改后實時生效





備注:
1. 如果要遷移的賬號目錄是登入使用中的系統管理員的話, 則必需建立及登入使用另一個臨時系統管理員賬號, 否則登入使用中的部分檔案文件因為系統使用中而不能完全復制成功。
2. 在 系統管理員身分 使用 xcopy 或 File Explorer 中復制賬號目錄貼上的話, 賬號目錄權限會錯誤, 導致用戶部分功能錯誤及保密讀寫權限缺失
例如: 所有默認圖示失蹤(如圖)
錯誤的賬號目錄權限(如圖), 任何用戶均可擦寫檔案文件
正確的賬號目錄權限
最后個人建議:
如果要遷移用戶賬號目錄(包括其一切檔案文件數據)的話, 遷移后不要立即刪除舊帳號目錄, 視不同情況酌情保留舊目錄數據一段時間, 緊急需要時還可以用來拯救狀態。
更正:
mklink -j 改正為 mklink /j 指令。
