Windows 的使用者目錄預設在 C:\Users,桌面、文件、下載、圖片,以及各種軟體塞進 AppData 裡的快取與設定,都放在這裡。時間一長,系統碟很快就會被塞滿。有些變通做法能緩解這個問題。例如,在文件、下載等資料夾的內容中變更位置,但這只能移走幾個資料夾,AppData 還留在原地。裝完系統之後修改登錄檔,或者用 mklink /J 建立目錄聯結。不過,既有的使用者設定檔到處都是舊路徑,權限也可能對不上,日後安裝軟體或更新時就容易出問題。比較乾淨的做法,是在系統剛裝好、尚未建立使用者帳戶時,先告訴 Windows 要把使用者目錄放在哪裡。這樣第一個使用者的目錄就會直接建在新位置。微軟提供的設定方式,就是回應檔中的 ProfilesDirectory。以下是在全新安裝的 Windows 11 上使用它的步驟。原理ProfilesDirectory 屬於 Microsoft-Windows-Shell-Setup 元件下的 FolderLocations,在 oobeSystem 這個設定階段生效。OOBE 就是安裝完成後讓你選區域、連線、建立帳戶的那一套首次開機流程,使用者目錄是在這個階段之後才建立出來的。所以,只要在進入 OOBE 前,把含有這項設定的回應檔交給 Windows 即可。這時就要用到稽核模式:它位於安裝完成與 OOBE 之間,可以使用內建系統管理員登入,執行 Sysprep 並指定回應檔,完成後再回到 OOBE。操作進入稽核模式正常安裝 Windows,直到出現區域選擇畫面。此時先不要繼續,按下 Ctrl + Shift + F3。系統會重新開機,並以內建系統管理員身分直接登入桌面,同時開啟 Sysprep 視窗。先關閉這個視窗,稍後再透過命令列執行。進入稽核模式前,最好先拔掉網路線,或不要連上 Wi-Fi。Windows 連網後可能自動更新 Microsoft Store 應用程式,這類與特定使用者綁定的更新經常導致 Sysprep 失敗;保持離線可以避開這個問題。準備資料碟目標磁碟必須使用 NTFS 格式,而且不能裝有另一份 Windows。如果是全新的磁碟,先到「磁碟管理」完成初始化、分割與格式化。Important稽核模式中的磁碟機代號,可能與安裝程式中看到的不同。撰寫回應檔之前,請先在檔案總管確認目標磁碟目前的代號。撰寫回應檔用記事本新增一個檔案,儲存到目標磁碟的根目錄,這裡叫 relocate.xml,存檔類型選「所有檔案」,編碼選 UTF-8。XML複製<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <FolderLocations> <ProfilesDirectory>D:\Users</ProfilesDirectory> </FolderLocations> </component> </settings> </unattend>processorArchitecture 要和系統一致,一般 64 位元電腦是 amd64,ARM 裝置是 arm64。ProfilesDirectory 指定要使用的位置,D:\Users 只是個例子,路徑不能是空的。執行 Sysprep以系統管理員身分開啟命令提示字元。先停止 Windows Media Player 網路共用服務,以免它影響 Sysprep,再指定回應檔執行 Sysprep。CMD複製net stop wmpnetworksvc %windir%\system32\sysprep\sysprep.exe /oobe /reboot /unattend:d:\relocate.xml/oobe 表示完成後回到 OOBE,/reboot 是完成後重新開機,/unattend 指向剛才的回應檔。過一會兒電腦會重新開機,再次出現選擇區域的畫面,這次正常走完流程,建立使用者就好。確認結果進入系統之後,開啟命令提示字元。CMD複製echo %USERPROFILE%如果輸出類似 D:\Users\用户名,且最後一段是你的使用者名稱,就表示成功了。也可以查看系統用來記錄此位置的登錄機碼。CMD複製reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectorySysprep 失敗的時候Sysprep 失敗時,視窗中的訊息通常無法看出原因,需要查看記錄檔。檔案位於 %windir%\System32\Sysprep\Panther 下面,setupact.log 是完整的過程,setuperr.log 只記錄錯誤。搜尋 error 和 fail,就能找到出問題的步驟。常見原因就是前面提到的兩種:連網後 Store 應用程式被更新,或網路共用服務尚未停止。若是應用程式的問題,記錄檔會出現類似「套件已為某個使用者安裝,但未為所有使用者佈建」的訊息,並指出應用程式名稱。透過 PowerShell 解除安裝後,再執行 Sysprep。下方指令中的應用程式名稱佔位文字,需替換成實際名稱。POWERSHELL複製Get-AppxPackage *应用名* | Remove-AppxPackage另外,Sysprep 同一時間只能執行一個執行個體。重複啟動,或上次執行異常結束,都可能讓它立即失敗;重新開機後再試即可。使用限制這個方法只適用於使用者目錄建立之前。已經安裝並使用一段時間的系統,需要重新安裝後才能操作。不過,日後重裝 Windows 時,即使格式化系統碟,資料碟上的使用者檔案仍會保留,可以直接取回需要的檔案。
Windows 的使用者目錄預設在 C:\Users,桌面、文件、下載、圖片,以及各種軟體塞進 AppData 裡的快取與設定,都放在這裡。時間一長,系統碟很快就會被塞滿。
有些變通做法能緩解這個問題。例如,在文件、下載等資料夾的內容中變更位置,但這只能移走幾個資料夾,AppData 還留在原地。裝完系統之後修改登錄檔,或者用 mklink /J 建立目錄聯結。不過,既有的使用者設定檔到處都是舊路徑,權限也可能對不上,日後安裝軟體或更新時就容易出問題。
比較乾淨的做法,是在系統剛裝好、尚未建立使用者帳戶時,先告訴 Windows 要把使用者目錄放在哪裡。這樣第一個使用者的目錄就會直接建在新位置。微軟提供的設定方式,就是回應檔中的 ProfilesDirectory。以下是在全新安裝的 Windows 11 上使用它的步驟。
原理
ProfilesDirectory 屬於 Microsoft-Windows-Shell-Setup 元件下的 FolderLocations,在 oobeSystem 這個設定階段生效。OOBE 就是安裝完成後讓你選區域、連線、建立帳戶的那一套首次開機流程,使用者目錄是在這個階段之後才建立出來的。
所以,只要在進入 OOBE 前,把含有這項設定的回應檔交給 Windows 即可。這時就要用到稽核模式:它位於安裝完成與 OOBE 之間,可以使用內建系統管理員登入,執行 Sysprep 並指定回應檔,完成後再回到 OOBE。
操作
進入稽核模式
正常安裝 Windows,直到出現區域選擇畫面。此時先不要繼續,按下 Ctrl + Shift + F3。系統會重新開機,並以內建系統管理員身分直接登入桌面,同時開啟 Sysprep 視窗。先關閉這個視窗,稍後再透過命令列執行。
進入稽核模式前,最好先拔掉網路線,或不要連上 Wi-Fi。Windows 連網後可能自動更新 Microsoft Store 應用程式,這類與特定使用者綁定的更新經常導致 Sysprep 失敗;保持離線可以避開這個問題。
準備資料碟
目標磁碟必須使用 NTFS 格式,而且不能裝有另一份 Windows。如果是全新的磁碟,先到「磁碟管理」完成初始化、分割與格式化。
稽核模式中的磁碟機代號,可能與安裝程式中看到的不同。撰寫回應檔之前,請先在檔案總管確認目標磁碟目前的代號。
撰寫回應檔
用記事本新增一個檔案,儲存到目標磁碟的根目錄,這裡叫 relocate.xml,存檔類型選「所有檔案」,編碼選 UTF-8。
processorArchitecture 要和系統一致,一般 64 位元電腦是 amd64,ARM 裝置是 arm64。ProfilesDirectory 指定要使用的位置,D:\Users 只是個例子,路徑不能是空的。
執行 Sysprep
以系統管理員身分開啟命令提示字元。先停止 Windows Media Player 網路共用服務,以免它影響 Sysprep,再指定回應檔執行 Sysprep。
/oobe 表示完成後回到 OOBE,/reboot 是完成後重新開機,/unattend 指向剛才的回應檔。過一會兒電腦會重新開機,再次出現選擇區域的畫面,這次正常走完流程,建立使用者就好。
確認結果
進入系統之後,開啟命令提示字元。
如果輸出類似 D:\Users\用户名,且最後一段是你的使用者名稱,就表示成功了。也可以查看系統用來記錄此位置的登錄機碼。
Sysprep 失敗的時候
Sysprep 失敗時,視窗中的訊息通常無法看出原因,需要查看記錄檔。檔案位於 %windir%\System32\Sysprep\Panther 下面,setupact.log 是完整的過程,setuperr.log 只記錄錯誤。搜尋 error 和 fail,就能找到出問題的步驟。
常見原因就是前面提到的兩種:連網後 Store 應用程式被更新,或網路共用服務尚未停止。若是應用程式的問題,記錄檔會出現類似「套件已為某個使用者安裝,但未為所有使用者佈建」的訊息,並指出應用程式名稱。透過 PowerShell 解除安裝後,再執行 Sysprep。下方指令中的應用程式名稱佔位文字,需替換成實際名稱。
另外,Sysprep 同一時間只能執行一個執行個體。重複啟動,或上次執行異常結束,都可能讓它立即失敗;重新開機後再試即可。
使用限制
這個方法只適用於使用者目錄建立之前。已經安裝並使用一段時間的系統,需要重新安裝後才能操作。不過,日後重裝 Windows 時,即使格式化系統碟,資料碟上的使用者檔案仍會保留,可以直接取回需要的檔案。