1. 程式人生 > >Windows7系統目錄遷移:Users,Progr…

Windows7系統目錄遷移:Users,Progr…

是不是 win7 硬編碼 sof api edi sys win 更新

微軟設計了比如:我的文檔、我的OOXX,之類的東西,在WIN7下面更連遊戲、下載等等目錄都設計好了,我也很乖巧的把各種文件都分門別類的放進去了。

同時也很厲害的設計在了“%HOMEDRIVE%”裏面,各種的資料,這種軟件的配置就全給放進去了

在XP的時候對於C盤的要求還不是那麽大,但是在win7下就顯的捉襟見肘了

再格式化,重裝系統就全沒了,囧,就也是必須移動出來的第二個理由

以前只是自己挪挪地兒,小改一下註冊表,今天無意中參考了幾篇文章,那搞的才是個全面啊,在膜拜只後就全給做筆記了,忽忽,先上牛人原文的傳送門

首先,不管你要怎麽挪,請記住挪壞了我不會負責。其次,確定系統是剛剛安裝好的,這樣比較不會出現意外,也更有效優化,確定是用 Administrator 登錄。

移動Program Files目錄到非系統盤

第一步,復制 Program Files 目錄

不能直接用資源管理器復制,我們需要保留此目錄的所有權限設置,(以前我就是直接在資源管理器面弄到,現在嚴重懷疑,我的機器時不時的抽風是不是和這個有關)假設要從 C 盤移動到 D 盤:

xcopy "C:\Program Files" "D:\Program Files\" /E /H /K /X /Y /C

第二步,修改註冊表

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"ProgramFilesDir"="D:\\Program Files"
"CommonFilesDir"="D:\\Program Files\\Common Files"

第三步,重啟

註意不是註銷,因為 Program Files 裏有很多文件是被系統服務使用的,註銷並不能重啟服務。

第四步,關閉 iphlpsvc 服務

因為它使用到了 “C:\Program Files\Internet Explorer\sqmapi.dll”:

net stop iphlpsvc

第五步,刪除 “C:\Program Files” 目錄

要先取得所有權,添加改寫權限後才可以刪除。

第六步,創建 Junction 文件夾映射

把 “C:\Program Files” 指向 “D:\Program Files”,這是為了防止一些硬編碼的 SB 程序不由分說地往 “C:\Program Files” 裏寫東西。

mklink /J "C:\Program Files" "D:\Program Files"

至此,Program Files目錄的轉移就結束了,與還不太放心的話,可以去註冊表找找“C:\Program Files”這個字串符,手動改改了,呵呵,改壞了就是你人品問題了。

移動ProgramData 目錄到非系統盤

第一步,復制 ProgramData 目錄

假設要從 C 盤移動到 D 盤:

xcopy C:\ProgramData D:\ProgramData\ /E /H /K /X /Y /B /C

第二步,修改註冊表

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList] 下的 ProgramData 數據原為 %SystemDrive%\ProgramData,改為 D:\ProgramData。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] 下的 “Common Administrative Tools”、”Common AppData”、”Common Programs”、”Common Startup”、”OEM Links”、”Common Templates” 等值的數據也相應地改改。如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Common Start Menu"="D:\\ProgramData\\Microsoft\\Windows\\Start Menu"
"Common Programs"="D:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs"
"Common Administrative Tools"="D:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Administrative Tools"
"Common Startup"="D:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"
"OEM Links"="D:\\ProgramData\\OEM Links"
"Common Templates"="D:\\ProgramData\\Microsoft\\Windows\\Templates"
"Common AppData"="D:\\ProgramData"

第三步,重啟

註銷的話需要多加 net stop iphlpsvc 和 net stop BITS。

第四步,刪除 C:\ProgramData 目錄

其中有兩個無法直接刪除的文件要先取得所有權,添加改寫權限後才可以刪除。

第五步,創建 Junction 文件夾映射

把 C:\ProgramData 指向 D:\ProgramData,這是為了防止一些硬編碼的程序不由分說地往 “C:\ProgramData” 裏寫東西。

mklink /J C:\ProgramData D:\ProgramData

移動Users 目錄到非系統盤

第一步,修改註冊表

和前面不同,因為 Users 目錄下有一些系統占用的文件,復制不了。如果你和我一樣有雙系統或者用 U 盤啟動 WinPE,那可以試試,不必按照這裏寫出的步驟做。但如果你沒有相應的設備的話,那就繼續SBS吧,先修改註冊表,再復制文件。假設要移動到 E 盤:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList] 下的 Default、ProfilesDirectory、Public 三個值的數據改一下,把盤符都改為 E:。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3843801140-3458922274-3296897442-500] 下的 ProfileImagePath 數據改為 E:\Users\Administrator。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] 下的 “Common Desktop”、”Common Documents”、CommonMusic、CommonPictures、CommonVideo 五個值的數據把盤符都改為 E:。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] 下的值看到數據中有 C:\Users 的都改為 E:\Users。

第二步,註銷,重新登錄

會發現一些用戶配置沒正確加載的問題,但不用理會。

第三步,復制文件

xcopy C:\Users E:\Users\ /E /H /K /X /Y /B /C

第四步,註銷,重新登錄

在第二步看到的問題,解決了。

第五步,刪除 “E:\Users\Default User” 目錄

因為這個目錄被 xcopy 復制錯誤,重新創建:

mklink /J "E:\Users\Default User" E:\Users\Default

然後對照 “C:\Users\Default User” 的權限設置,把 “E:\Users\Default User” 設置成和它一樣:

cacls "E:\Users\Default User" /S:"D:PAI(D;;CC;;;WD)(A;;0x1200a9;;;WD)(A;;FA;;;SY)(A;;FA;;;BA)"

第六步,刪除 C:\Users 目錄

直接用資源管理器刪除,很順利。

第七步,創建映射

mklink /J C:\Users E:\User

高級移動

好吧,我承認前面的你都移動了,其實系統還是會添加幾個G文件區C盤,我們前面只是移動了應用軟件的默認安裝位置,和一些個人數據

這裏要說的是,對於像 %SystemRoot%\Installer、%SystemRoot%\SoftwareDistribution 這類“頑固”的文件夾,不能通過修改註冊表來定義路徑的設置!

我們要先準備一個工具Junction傳送門

這兩個文件夾比較“常用”,MSI 安裝程序會把安裝文件緩存到 %SystemRoot%\Installer,比如您裝了 VS,會發現這個文件夾大了很多;而 %SystemRoot%\SoftwareDistribution 是自動更新服務用來緩存更新程序的。我的這兩個文件夾加起來就有2GB多,惆悵

  假設要把 %SystemRoot%\Installer 修改為 E:\SysDir\Installer,

首先通過資源管理器把 C:\WINDOWS\Installer 文件夾剪切到 E:\SysDir\ 下(這個文件夾是隱藏的)

然後在命令提示符下輸入:

junction C:\WINDOWS\Installer E:\SysDir\Installer

對於 SoftwareDistribution 要多一步,要先停止自動更新服務:

net stop wuauserv

後面步驟和 Installer 的一樣,剪切 -> Junction:

junction C:\WINDOWS\SoftwareDistribution E:\SysDir\SoftwareDistribution

  這樣做完之後 C:\WINDOWS\ 下的 Installer 和 SoftwareDistribution 其實只是文件夾的映射,對他們的寫入操作全部都會映射到 D:\SysDir\ 下的對應文件夾。本質上就是把E盤的空間拿到 C 盤使用,減少對 C 盤的寫入。

Windows7系統目錄遷移:Users,Progr…