在vista / W7下将c:\ users移动到d:\ users的最佳方法是什么?

我刚刚安装了Windows 7 RC1,并希望将c:\ users移动到d:\ users。

什么是最好的方法来做到这一点?


由于Windows 7在恢复控制台中创build了一个以C:挂载的保留分区,因此我必须使用以下命令

robocopy /mir /xj D:\Users E:\Users mklink D:\Users D:\Users /j 

mklink命令中的D都是正确的。 系统重新引导时,故障恢复控制台中的D驱动器将成为C驱动器。

小心:下面描述的方法确实有效 – 但是,如果您需要执行系统还原,我的经验是系统还原不知道您在这里做了什么,并且基本上通过让您没有恢复后的真实configuration文件。 解决这个问题并不简单。 我已经过了几次这个碎玻璃,所以你可能要重新考虑这样做。


在安装完Windows后,可以将整个C:\ Users文件夹移动到另一个驱动器上:

  1. 引导至安装介质,并进入命令提示符( 在安装对话框中按Shift + F10 )
  2. 使用Robocopy将C:\ Users复制到D:\ Users: robocopy c:\Users d:\Users /mir /xj /copyall
    一个。 /mir告诉robocopy镜像目录,这将复制所有文件
    /xj非常重要,这告诉robocopy不要跟着交接点。 如果你忘了这个,你将会遇到很多麻烦。
    C。 /copyall将复制包括ACL和所有者信息的所有属性
  3. 确认文件已成功复制
  4. 删除c:\ Users
  5. 创build指向d:\ Users: mklink c:\Users d:\Users /j路口

而已。 我一直在使用这个过程,因为Vista的RTM没有问题。

这里也有一篇文章解释它。 只要使用robocopy而不是xcopy就像他在文章中所做的那样,以避免可能的NTFS权限问题。

更新:因为我发现了困难的方式,所以我想我还要提到,如果您打算使用此方法移动“程序数据”或“程序文件”,您将会失望地发现一切正常,但Windows更新将不再安装。 我不确定是否已经修复Win 7。

更新2:@Benjol有一个博客文章 ,详细介绍了移动configuration文件文件夹的方法,该文件夹将重新创build此方法遗漏的路口。 如果遇到遗留应用程序的任何问题,请查看此处,看看他的方法是否可以解决问题。

最简单推荐的方法是移动用户目录中的单个特殊文件夹,例如文档,音乐,video等。您可以通过以下步骤执行此操作:

  1. 右键单击 – >属性
  2. 位置选项卡
  3. 填写所需的位置,然后点击“移动”

对此的缺点是,这仍然留下主要的“用户”文件夹就地。

困难的方法是更复杂和更危险的:

在我的search解决scheme,我发现从系统驱动器移动用户configuration文件目录位置的唯一两个简单的方法是

  1. 使用无人参与安装文件在安装过程中设置用户configuration文件文件夹。
  2. 移动你的用户configuration文件内的个人文件夹,这可以使用浏览器(它将更新registry项HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell文件夹和HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Usershell文件夹)。

但是,这对我来说不够好,我希望将我的实际用户configuration文件文件夹移动到单独的分区/卷,包括registry设置。 我发现,这实际上并不难,只要你愿意大量replaceregistry项和值。

这是我如何移动我的用户configuration文件的位置。 请注意,我希望移动的所有configuration文件(包括“公开”和“默认”)都是如此,因此,如果您不需要这些步骤,则可以跳过其中一些步骤:

  1. 确保你有一个完整的系统备份!
  2. 将原来的默认configuration文件目录复制到新位置(例如从C:\ Users \ Default到D:\ Users \ Default)。
  3. 将原来的公共configuration文件目录复制到新的位置(例如从C:\ Users \ Public到D:\ Users \ Public)。
  4. 导航到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList。
  5. 将Default键的值更改为新的用户configuration文件位置(例如D:\ Users \ Default)。
  6. 将公钥的值更改为新的用户configuration文件位置(例如D:\ Users \ Public)。
  7. 将ProfilesDirectory的值更改为新的用户configuration文件位置(例如D:\ Users)。
  8. 此时,您需要重新启动并以另一个从未login过的用户身份重新login,因此没有创buildconfiguration文件。 在我的情况下,pipe理员用户从来没有login过,所以我启用它,以便pipe理员可以login和使用它。 您可以通过加载计算机pipe理启用pipe理员login,然后转到用户帐户,编辑pipe理员的属性,然后取消选中禁用login。
  9. 用新的用户帐户第一次login后,您将看到“创build桌面”和其他类似的东西,而Windows正在创build您的个人资料。 请注意,新的configuration文件应该在新的位置创build。
    1. login后,尝试closures尽可能多的应用程序。 这将防止大多数文件被locking,所以你不能复制它们。
    2. 将原始用户configuration文件文件夹从原始位置复制到新位置(例如C:\ Users *到D:\ Users)。 (复制开始后请参阅下一步)。
    3. 在这个副本中有几件事要注意。 有成千上万的.TMP文件被locking,不会复制。 我刚刚跳过这些文件。 我按住Alt-S,以便我可以看到所有跳过的文件,并确保只有.TMP文件被跳过。 是的,这花了一些时间,但至less我有信心,我把所有的文件都复制了。 使用命令提示符或PowerShell可以使这个过程更容易。
    4. 如果在你的情况下有一些文件不能复制,你可以运行由sysinternals提供的文件procexp.exe。 然后做一个查找句柄并search部分文件名。 procexp会告诉你哪些程序正在locking文件。 只要你closures尽可能多的程序,但是,这不应该发生。
    5. find并下载将在registry上执行search和replace的程序。 我不会build议,因为我没有find一个完美的单一程序。 我结束了下载几个不同的免费软件应用程序,并使用所有这些应用程序。
    6. 使用registrysearch和replace程序,search原始用户configuration文件文件夹,并将其replace为新的用户configuration文件文件夹(例如,search“C:\ Users”并replace为“D:\ Users”。我所使用的应用程序只会改变数值,而不会改变键名,但是需要改变的键都和MuiCache有关,我不知道这些是否需要更新,我只是为了确定。
    7. 登出。 用相同的用户重新login。 重复步骤14,直到没有任何东西需要更换。 这一步的原因是在注销时,一些程序似乎使用旧的用户configuration文件path来更新registry。
    8. 运行regedit.exe并search原始用户configuration文件path,并确保它不存在。 这一步的原因是(如步骤13所述),我不信任我使用的任何registrysearch和replace程序。 我最终需要手动更新大约十几个键和值,因为search和replace错过了它们。
    9. 因此,您可以轻松find不使用registry和硬编码configuration文件path的程序,重命名原始configuration文件文件夹(例如,将C:\ Users重命名为C:\〜Users)。
    10. 登出。 以平常用户身份login。 除了使用“硬编码”用户configuration文件位置的程序之外,一切应该正常工作。
    11. 有两种简单的方法可用于查找使用“硬编码”configuration文件位置的程序,并仍在查找原始用户configuration文件path。 您可以使用上述的procexp.exe技巧,并在原始configuration文件位置中search句柄。 您还可以监视oringalconfiguration文件位置以查看是否创build了任何新的文件夹或文件。 例如,在我的情况下,FolderShare在目录C:\ Users \ MyUsername \ AppData \ Local \ FolderShare中创build了一些文件夹和文件。 因此,我更新了FolderShare设置以指向不同的path,然后删除了C:\ Users目录(请注意C:\ Users仍然作为备份存在)。
    12. 由于您现在确信您的所有数据都已被移动(对吗?),您可以删除原始用户configuration文件位置(例如C:\〜Users)的备份。

来源:更改Vista中的用户configuration文件文件夹位置

看到微软很容易改变特殊文件夹的位置,所以很难改变整个用户文件夹结构的位置,我强烈build议你采取简单的方法

这是正确的过程

  1. 启动到安装介质,并进入命令提示符(我相信你需要先点击修复)
  2. 使用Robocopy将C:\ Users复制到D:\ Users:robocopy c:\ Users d:\ Users / mir / xj / copyall
    一个。 / mir告诉robocopy镜像目录,这将复制所有文件
    湾 / xj非常重要,这告诉robocopy不要跟着交接点。 如果你忘了这个,你将会遇到很多麻烦。
    C。 / copyall将复制包括ACL和所有者信息的所有属性
  3. 确认文件已成功复制
  4. 删除c:\ Users
  5. 创build指向d:\ Users:mklink c:\ Users d:\ Users / j的路口

我做了Jimmie的指导,几乎在工作。 但是,我有一个奇怪的问题与IE浏览器,我无法下载文件。 我find了解决我的下载问题的解决scheme,并以超级用户身份logging:

一些资源用于在安装过程中使用无人参与的脚本“自动”移动C:\ Users。

微软有一个关于移动特殊文件夹可能有助于通读的问题。

当涉及到无人参与脚本本身时,有一个名为FolderLocations的元素,它具有您可以指定的ProfilesDirectory子元素:

 <?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86"> <FolderLocations> <ProfilesDirectory>d:\users</ProfilesDirectory> </FolderLocations> </component> </settings> </unattend> 

这里是关于部署Vista的Microsoft文章,其中包括如何处理unattend.xml,这里是我发现的最好的来源,我已经find了扩展如何移动特殊文件夹由Ramesh Srinivasan文章深入解释如何做到这一点,以及要注意什么(包括这样一个事实,即使在这个无人参与的脚本已经运行了,例如作为setup.exe的一个参数,仍然有像c:\ documents和settings这样的交叉点指向旧的位置,你需要手动修复(如果可能))。

"C:\users"是一个系统文件夹,相当于Windows XP / 2000 / NT上的"C:\Documents and Settings" ,因此如果不是不可能移动文件夹,那真的很难。 有几种方法来解决这个问题,通过移动子文件夹通过TweakUI或类似的黑客,而不是父文件夹,有很多关于这个看到这里的post:

http://www.tech-recipes.com/rx/1409/move-your-documents-and-settings-username-profile-off-of-the-c-drive/

http://support.microsoft.com/kb/236621

http://support.microsoft.com/default.aspx?scid=kb;en-us;314843

http://support.microsoft.com/default.aspx?scid=KB;EN-US;q310147&ID=KB;EN-US;q310147

但是对于Vista / Windows 7,似乎这个过程可能变得更简单了。 这里有一些post告诉你如何在Vista上做到这一点,它的核心是Windows 7是什么:

http://www.ehow.com/how_2064387_relocate-user-files-windows-vista.html

http://www.technospot.net/blogs/how-to-move-users-folder-to-different-location-in-windows-vista/

http://www.howtogeek.com/howto/windows-vista/moving-your-personal-data-folders-in-windows-vista-the-easy-way/

我研究了很长一段时间。 这是不能做到的。 您可以移动“特殊”文件夹(文档,我的音乐等),但不能重定位用户目录。

大部分是从别人那里复制的,然后由现在的作家,服务人员进行修改和扩展。

要最轻松地将所有用户文件和用户程序文件从您的启动驱动器(我的情况下是一个SSD)中移出,请按照这些说明进行操作。

首先,创build一个还原点,以防万一:1.单击开始button,右键单击计算机,然后单击属性以打开系统。 2.在左侧窗格中,单击系统保护。 如果系统提示您inputpipe理员密码或进行确认,请input密码或进行确认。 3.单击“系统保护”选项卡,然后单击“创build”。 4.在“系统保护”对话框中,键入说明,然后单击“创build”。

然后:转到系统恢复/命令提示符:启动Win7安装DVD,select语言,货币和键盘,然后点击下一步。 在“立即安装”屏幕上select“修复您的计算机”您将被问到是否要通过系统恢复选项“修复和重新启动”,select“否”。 然后确保Windows 7被列为可用于恢复的已安装操作系统之一,并且已选中,然后按下一步。 你会得到一个恢复工具的列表。 select“命令提示符”。

find从Win7媒体(可能是C或X)加载的虚拟Windows驱动器,find您的实际Windows / SSD驱动器(D或E),并find您的硬盘(常规硬盘驱动器)(D或E)。

在我的系统中,通常情况下,C = SSD上有Windows,D = HDD数据驱动器

使用Win7更新媒体,在恢复模式下的驱动器设置不同,因此:X:虚拟/临时Windows驱动器,E:实际的Windows / SSD驱动器,D:硬盘驱动器,我想把用户。

有些人报告说,系统恢复模式会设置他们的驱动器,如下所示:C:虚拟/临时Windows驱动器D:实际的Windows / SSD驱动器E:硬盘,他们想把用户打开。

在命令提示符下,您将使用Robocopy(NOT xcopy!)将c:\ Users复制到d:\ Users,然后删除旧的c:\ Users,然后从c:\ Users创build符号链接到D:\ Users。 请注意,您必须按顺序执行这些操作,并且在执行此操作之前,您不得有ad:\ Users dir。

注意:在系统恢复命令提示符窗口中,您的驱动器与离开恢复模式后的驱动器不一样! 因此,请调整下面的命令以确定驱动器是否处于恢复模式,然后稍后才能正确输出。

我用:robocopy / mir / xj E:\ Users D:\ Users

从Windows / SSD移动/用户到HDD。 / mir告诉robocopy镜像目录,这将复制所有的文件和权限。 / xj非常重要,这告诉robocopy不要跟着交接点。 如果你忘了这个,你将会遇到很多麻烦。 确保没有文件无法复制(FAILED列= 0)。

然后,您必须从Windows / SSD(c :)驱动器中删除旧的用户文件夹,然后才能创build符号链接:我使用:rmdir / S / QE:\ Users

创build一个NTFS连接/符号链接指向新的用户文件夹:

我用:mklink / JE:\ Users D:\ Users

使用/ J开关创build一个硬符号链接。 (如果你使用/ D开关,你还必须编辑registry,因为它不会是一个硬链接。)使用/ J,当Windows查找C:\ Users目录时,它会find它! 但它将在HDD而不是SSD上。 整蛊!

要查看所创build内容的certificate,请在命令提示符窗口中进入实际的Windows / SSD并执行“dir”命令,您将看到:“Users [D:\ Users]”

现在重新启动,你会看到/硬盘上的用户,你去。 不需要进一步的configuration或摆弄。 新的用户configuration文件将全部存储在d:驱动器上,任何用户特定的数据也一样。 这是可以实现的,不用在registry中进行任何搞乱,search和replace值,或以任何方式混淆新的configuration文件。 完全设置和忘记。

这有点晚了…

移动c:\用户到另一个磁盘的问题可以通过移动个人configuration文件而不是整个目录来避免。

如果你在c:\用户连接到新目录的路口上,所有的path都继续工作,就像Jimmie Houts的解决scheme一样,但是我不会移动pipe理员,networking服务,公共等,所有正常的系统function,比如Windows更新,继续正常工作。

伊恩

这不是你所需要的,但是如果在Windows 7中,一个非常好的select是改变库的位置。 通过这种方法,您可以保存文档,图片等,但不是D盘中的所有configuration文件。

昨晚我创build了一个可能对你有用的工具: 设置库 。