如何將Windows的C:user像Linux的/home一樣單獨掛載一塊硬碟?


先佔個坑。下課後再回答。

在開頭先說明,本文禁止轉載

OK 下課歸來。把自己在這方面的見解和實踐寫在這裡,為更多的知友提供一些思路。

在Linux下目錄可以單獨分區。這種方式使得Linux的系統文件用戶文件得以分離。同時在Linux中軟體的配置問題一般都由此軟體的配置文件來解決。故Linux下目錄單獨分區或者說分區「掛載」到目錄下這一做法就做到了「系統」「軟體」「用戶的個性化配置」這三方文件的獨立,當這三方文件中的任意一部分出現問題時,只要恢復各自所在的分區就好。

那麼在Windows下能否實現這樣的功能呢?

答案是「可以」但是!在Windows下是無法完全複製「目錄單獨分區」這一功能的。

行,淡么就先扯到這裡。下面說說詳細的過程。

事實上Linux中的目錄單獨分區==掛載分區到空目錄。So,正如 @依雲 所說Windows提供了「掛載分區到空目錄」這一功能。但C:Users目錄並不是空目錄。

因此我們要實現C:Users目錄單獨分區功能的第一步就是「C:Users目錄應該為空」!

然而,事情並沒有想像的那麼順利。。。

通過查資料得知,在Windows剛安裝完成後,用戶創建賬戶之前,C:Users目錄下存在一個Default的目錄,此目錄中存放著賬戶的默認配置文件。也就是說,當你完成Windows的安裝後,在你創建賬戶時,Windows會從Default目錄下複製一份默認配置文件到你的賬戶下。此過程必須發生!

那麼,我們就解決第二個問題。邏輯上C:Users下必須存在必要的文件!

此時就要應用Robocopy這一工具了。具體的演示,我在虛擬機中進行。

在虛擬機中我創建了兩塊硬碟分別充當兩個分區。

正常安裝之後…………………………

在這裡停頓!(DJ臉)

在此時應按下Shift+F10調出「命令提示符」

輸入diskpart命令,進入diskpart環境(diskpart的具體功能請大家自行搜索)

之後輸入以下命令

list disk //列出電腦中的所有磁碟
select disk n //選中第n快磁碟
list partition //列出選中磁碟的所有分區
select partition n //選中第n個分區
detail partition //列出分區的詳細信息

最終結果

我們看到此分區的盤符為 D

接下來輸入exit退出diskpart環境

此時就要使用robocopy工具了。在命令提示符下輸入以下內容

robocopy C:Users D: /E /COPYALL /XJ
/* /COPYALL 代表複製文件的所有屬性 /XJ 代表排除鏈接內的文件 */

之後的顯示結果

此刻我們就能愉快的刪去C:Users目錄,並新建一個空目錄:C:Users

rd C:Users /s /q //刪去Users目錄
md C:Users //新建Users(空)目錄

到這之後,工作已經完成了大半。讓我們再次進入diskpart環境,輸入如下命令

select disk n
select partition n
remove
assign mount=C:Users
exit

我想,有Linux經驗的人看到mount就已經明白了吧,我認為我不用再說了。

現在工作就完成了,關掉命令提示符,繼續下一步就好。

最後補一張本人電腦的C:Users的掛載情況

Ps:作為混跡知乎1 年, 4 個月, 4 周, 2 天的新人,這是我最長的回答了。各位知友點個「贊」唄。

=============================後續描述=================================

好開心,第一次認真的回答問題就收到了這麼」贊「!撒花 撒花^_^

咳咳,估計會有越來越多的人看到這個回答,也許會有朋友因好奇心而參考我的實踐過程去自己嘗試這一行為。所以就在這裡對我的操作過程及最後的結果做出一些說明。

  1. 在評論區,有朋友提出了其他的方法,認為我的操作太繁瑣。在此我想說,我回答這個問題是因為我在學習完Linux後,產生了和此問題一樣的想法:「Users(用戶目錄)能不能單獨分區呢?」在實現這一結果的過程中我遇到了很多的問題(例如:在分區中出現了大量我沒有能力判斷的文件、系統正常啟動,但用戶無法登陸、安裝系統時賬戶無法被創建)。我本人並不是學習「計算機」的(好冷門的「城市燃氣」……),這個回答中的解決方法是在我的計算機水平下最接近「Users(用戶目錄)單獨分區」這一功能的。而我回答這一問題的初衷就是為了表達出我的一個解決思路,為「Users(用戶目錄)單獨分區」這一想法提供一個切實可行的解決之道,激發廣大知友的思路(我在最開始就說了)。我的解決方法肯定不是最優解,甚至可能就是錯誤的。在這裡我等待著大神的降臨。

2. 還有朋友說,為何要這樣做呢?我的答案是「不知道」。我認為也許是折騰黨的折騰一切的心理在作怪吧。

===============================Bug牆==================================

使用上述方法實現C:Users單獨分區後,會有一些正常功能的缺失,在這裡總結一下:

  1. adobe flash plugin 不能寫入cookies | 具體表現:使用優酷之類的視頻網站時,視頻的清晰度不能固定,每次打開網頁其清晰度均為默認。(IE、edge、Firefox受影響,google chrome 和國內的瀏覽器沒有此問題)
  2. google chrome 和國內的瀏覽器均無法安裝擴展。評論區提出了解決方法。(Firefox不受影響、Edge未測試)
  3. 未知bugs等待後續加入……


提到subst的多半是沒看清題主的需求並且沒仔細用過subst...

1、subst只能由文件夾虛擬成驅動器,而不能反過來,所以不符合題主要把users掛載在一塊獨立磁碟的需求。

2、即便目的是使用兩個驅動器號,subst也不好。subst出的驅動器只能在當前用戶的當前令牌下訪問。也就是,管理員許可權虛擬,正常令牌看不到,system用戶更不用想了。反之亦然。

高票回答是切題的,其實也可以通過oobe時sysprep審核模式+xml手動指定 users 文件夾。

PS:XP時代我常使用subst,蠻好用的,對某些遊戲或軟體來說,可以當虛擬光碟機用。設置一個啟動批處理,subst一個常用文件夾為驅動器,也很好用,畢竟XP時代的資源管理器定製性是真的弱…


Windows 是支持掛載分區到目錄了,然而怎麼把被系統使用的目錄遷移到另一個地方是個好問題。


有一款軟體個人用下來覺得很適合你,請搜索junction


設置里有


linkd.exe C:Users D:


看起來是C:Users(用戶配置文件)太大導致系統分區不夠用了,那麼解決方法包括:

(1)直接將用戶配置文件修改到其它位置。註冊表的以下位置:

HKLMSoftwareMicrosoftWindowsNTCurrentVersionProfileList

定義了用戶配置文件的路徑,包括默認、公共,以及每個用戶的。

需要修改Default、ProfileDirectory、Public3個Key Value,以及展開後每個SID對應的Key下的ProfileImagePath的Key Value。

注意,修改之前需要先將當前的配置文件拷貝到新位置,可以使用以下命令:

xcopy /b /x /e /h /c c:Users d:Users

這可以保留之前的文件許可權,並且將符號連接處理掉。

(2)將C:User的使用轉移後,C:Users下可以改名,然後新建C:Users(注意許可權同之前的保持一致),那麼從磁碟管理器中,就可以將其它分區掛載在C:Users下了。

對於遠程桌面伺服器,我一直是這麼管理的。


計算機-&>管理-&>磁碟管理 里就可以掛載分區到目錄里,似乎要先分配盤符。如果是系統目錄等,在PE下將文件copy到分區里,應該可行。


掛載可以用mklink……怎麼搬走是個問題


@PhoenixGo 的回答簡短準確 (subst命令)

你有這個需求我估計八成是因為你分區沒有規劃好。 現在的硬碟容量都很大,如果你不是多系統環境的話其實沒有必要分多個區了,一個盤一個分區就好了。 如果你希望把某個用戶的主目錄(比如%USERPROFILE%)挪到其他地方,那麼你可以在我的電腦右鍵計算機管理(win8 win10也一樣,只是不叫我的電腦而已),本地用戶和組,用戶里找到自己的用戶,修改一下用戶目錄即可。裡面可以選擇掛載點或者是某個目錄。

@依雲 提到的修改系統目錄的位置我以前也想過,曾經用mklink+robocopy把目錄轉移到其他分區下,後來發現多數情況都ok,但是好多安全更新(比如IE9)死活裝不上。於是就重做系統不這麼玩了。


subst z: c:user

放到啟動腳本里


推薦閱讀:

微軟為什麼用帶 BOM 的 UTF-8,造成和多數系統的不兼容?
關於 llvm/clang 在 Ubuntu 下的安裝?
semaphore和mutex的區別?
購置筆記本電腦,Ubuntu專用,求品牌型號推薦?

TAG:MicrosoftWindows | Linux |