轉載自: http://moonwulk.blogspot.com/2010/06/windows-7-userprofile.html 在實測多種不同方法後綜合一個可行而且頗為滿意(起碼沒有踫到死當或缺陷), 過程快捷順利, 只要註意許可權問題, 加上一些手動小修改罷了。認識 Windows 7 系... ...
轉載自:
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 指令。