在Vista / W7下将c:\ users移至d:\ users的最佳方法是什么[关闭]


64

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

最好的方法是什么?


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

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

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


1
接得好!当我移至Windows 7时,我将不得不记住该保留的分区详细信息
Jimmie R. Houts,2009年

1
请参阅此相关的问题(针对Vista),及答案:serverfault.com/questions/4624/...
Benjol

我不能发表评论,所以我正在写一个答案。有人应该警告示例中的/ mir选项(似乎代表“ mirror”):robocopy / mir / xj D:\ Users E:\ Users将删除E:\ Users中所有不在D中的内容:\用户。确实,我想知道/ mir选项是否真的必要。我最终从较旧的安装中删除了非空/ Users文件夹中的许多文件。

这个问题已经关闭,因为题外话而已,但有大量支持者和支持者,这不是很搞笑。

这是因为民众使用此网站针对诸如非常实际的问题使用诸如此类的真实问题,但是我们强大而强大的霸主觉得这是没有用的,因为他们是几年前学到的东西,而不是像我们这些天一样陷入IT的大混乱中。
大卫

Answers:


65

安装Windows之后,您可以很容易地将整个C:\ Users文件夹移动到另一个驱动器:

警告:如果/当您需要执行系统还原时,这样做可能会导致问题

  1. 引导至安装介质,并进入命令提示符(在安装对话框中按Shift + F10
  2. 使用的Robocopy复制到C:\用户到d:\用户:robocopy c:\Users d:\Users /mir /xj /copyall
    一。/mir告诉robocopy镜像目录,这将复制所有文件
    b。/xj非常重要,这告诉robocopy不要遵循连接点。如果您忘记了这一点,将会遇到很多麻烦。
    C。/copyall将复制所有属性,包括ACL和所有者信息
  3. 验证文件是否成功复制
  4. 删除c:\ Users
  5. 创建指向d:\ Users的联结: mklink c:\Users d:\Users /j

而已。自从Vista顺利运行RTM以来,我一直在使用此过程。

这是一篇说明它的文章。只需使用robocopy而不是xcopy即可,就像他在文章中所做的那样,以避免可能的ntfs权限问题。

更新:因为我发现了困难的方法,所以我想我还要提到的是,如果您打算使用这种方法移动“程序数据”或“程序文件”,您将失望地发现一切都按预期进行,但Windows更新将不再安装。我不确定Win 7是否已解决。

更新2:@Benjol有一篇博客文章,其中详细介绍了移动个人档案文件夹的方法,该方法将重新创建此方法遗漏的联结。如果您在旧版应用程序中遇到任何问题,请在此处查看,看看他的方法是否可以解决问题。


1 +离线移动+交接点是最简单的解决方案-但我要补充一点,无人值守的安装脚本也可以在安装过程中完成此操作^^
Oskar Duveborn

这是一个非常不错的技巧……我很高兴有人发布了执行此操作所需的所有步骤。
mrTomahawk

8
-1:请注意,这种方法不会重新创建所有不是由robocopy复制的联结(nb robocopy即使没有/ xj也无法复制联结,它会创建新文件夹)。这不会停止Windows的运行,但可能会破坏旧的应用程序,这些应用程序正在寻找“我的文档”等文件夹...
Benjol,2009年

1
更改文件夹设置以查看系统文件和隐藏文件。Users文件夹充满了连接点,这些连接点指向(例如)从“我的文档”到“文档”等。它是与旧版应用程序的向后兼容性,因此您可能会或可能不会注意到其中的不同,具体取决于安装的内容。
Benjol

3
+1 @Jimmie详细说明了如何执行此操作。我真的厌倦了Windows只是一路狂奔,将用户数据和应用程序安装放到任何地方而无需先问我!WTF他们很难改变吗?如果我的主分区是SSD驱动器,并且为了性能而在其上安装了Windows,该怎么办?我敢肯定,不要将使用该分区的窗口用作所有事物的该死的胰腺!
greatwolf 2010年

11

最简单的推荐的方法是将用户目录内的个别特殊文件夹,如文档,音乐,视频等,您可以通过以下步骤做到这一点:

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

不利的一面是,它仍然保留了主“用户”文件夹。

的方法是很多更复杂和危险:

在寻找解决方案时,我发现将用户配置文件目录位置从系统驱动器中移动的两种简单方法是:

  1. 使用无人参与的安装文件在安装过程中设置“用户配置文件”文件夹。
  2. 移动用户配置文件中的各个文件夹,这可以使用资源管理器完成(这将更新注册表项HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell文件夹和HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User外壳文件夹)。

但是,这对我来说还不够好,我希望将实际的用户配置文件文件夹移动到单独的分区/卷,包括注册表设置。我发现实际上并不难,只要您可以批量替换注册表项和值即可。

这是我移动用户个人资料位置的方法。请注意,我希望所有配置文件都被移动,包括“公共”和“默认”,因此如果您不希望这样做,可以跳过其中一些步骤:

  1. 确保您已完整备份系统!
  2. 将原始的默认配置文件目录复制到新位置(例如,从C:\ Users \ Default到D:\ Users \ Default)。
  3. 将原始的“公共配置文件”目录复制到新位置(例如,从C:\ Users \ Public复制到D:\ Users \ Public)。
  4. 导航到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList。
  5. 将默认密钥的值更改为新的用户配置文件位置(例如D:\ Users \ Default)。
  6. 将公用密钥的值更改为新的用户配置文件位置(例如D:\ Users \ Public)。
  7. 将ProfilesDirectory的值更改为新的用户配置文件位置(例如D:\ Users)。
  8. 此时,您需要以其他用户的身份重新启动并重新登录,该用户之前从未登录过,因此没有创建配置文件。就我而言,管理员用户以前从未登录过,因此我启用了它,以便管理员可以登录并使用它。您可以通过加载“计算机管理”来启用管理员登录,然后转到“用户帐户”,编辑“管理员”的属性,然后取消选中“禁用登录”。
  9. 使用新用户帐户首次登录后,在Windows创建配置文件时,您将看到“正在创建桌面”以及类似的内容。请注意,应在新位置创建新的配置文件。
  10. 登录后,尝试关闭尽可能多的应用程序。这样可以防止大多数文件被锁定,从而使您无法复制它们。
  11. 将整个原始用户配置文件文件夹从原始位置复制到新位置(例如,将C:\ Users *复制到D:\ Users)。(复制开始后,请参阅下一步)。
  12. 在此复制过程中,有几件事要注意。有成千上万的.TMP文件被锁定并且无法复制。我只是跳过了这些文件。我按住Alt-S可以看到所有跳过的文件,并确保只有.TMP文件被跳过。是的,这花了一些时间,但是至少我有信心复制了所有文件。使用命令提示符或powershell可以使此过程更容易。
  13. 如果您遇到一些无法复制的文件,则可以运行procexp.exe,它是sysinternals提供的文件。然后执行查找句柄并搜索文件名的一部分。procexp会告诉您哪些程序正在锁定文件。但是,只要您关闭了尽可能多的程序,就不会发生这种情况。
  14. 查找并下载将在注册表上执行“搜索并替换”的程序。我不会提出任何建议,因为我没有找到一个能完美运行的程序。我最终下载了一些不同的免费软件应用程序并使用了所有这些软件。
  15. 使用注册表搜索和替换程序,搜索原始的用户配置文件文件夹,并将其替换为新的用户配置文件文件夹(例如,搜索“ C:\ Users”,然后替换为“ D:\ Users”。我使用的应用程序只会更改值,而不会更改键名,但是,需要更改的键都与MuiCache有关,我不知道这些键是否真的需要更新。
  16. 登出。使用同一用户重新登录。重复步骤14,直到没有剩余可替换的东西为止。此步骤的原因是在注销时,某些程序似乎使用旧的用户配置文件路径来更新注册表。
  17. 运行regedit.exe并搜索原始用户配置文件路径,并确保该路径不存在。进行此步骤的原因是因为(如步骤13中所述),我不信任我使用的任何注册表搜索和替换程序。我最终需要手动更新大约十二个键和值,因为搜索和替换遗漏了它们。
  18. 为了可以轻松找到不使用注册表和硬编码配置文件路径的程序,请重命名原始配置文件文件夹(例如,将C:\ Users重命名为C:\〜Users)。
  19. 登出。以通常的用户身份重新登录。除使用“硬编码”用户配置文件位置的程序外,其他所有内容均应正常运行。
  20. 有两种简单的方法可用于查找使用“硬编码”配置文件位置并且仍在寻找原始用户配置文件路径的程序。您可以使用上面提到的procexp.exe技巧并在原始配置文件位置中搜索句柄。您还可以监视原始配置文件的位置,以查看是否创建了任何新文件夹或文件。例如,就我而言,FolderShare在目录C:\ Users \ MyUsername \ AppData \ Local \ FolderShare中创建了一些文件夹和文件。因此,我更新了FolderShare设置以指向其他路径,然后删除了C:\ Users目录(请注意,C:\〜Users仍作为备份存在)。
  21. 由于您现在确信所有数据都已移动(右?????),因此可以删除原始用户配置文件位置(例如C:\〜Users)的备份。

来源:在Vista中更改用户配置文件文件夹位置

鉴于Microsoft使得更改特殊文件夹的位置变得如此容易,而更改整个用户文件夹结构的位置也变得如此困难,我强烈建议您采用简单的方法


5
kes!不会建议对我更糟糕的敌人进行此过程:-),但是... +1,因为不管看起来有多混乱,它都会起作用。我不知道还有什么其他诸如“ hack”之类的事情可能会破坏线路……

我看到了这篇文章,但我想移动整个用户目录,并希望避免在注册表中产生混乱。
斯科特,

1
我要补充一点,移动所有“特殊”目录而不是“用户”的问题是,您不能将AppData作为特殊文件夹移动,并且越来越多的程序在其中保留其缓存,保存和大量数据。
Aquarion

2
@Aquarion:但是可以使用“位置”选项卡移动本地,LocalLow和漫游目录:)
Milind R 2014年

四年来技术的进步确实是无限的。能够重定向目录中几乎每个单独的文件夹及其子目录中的每个单独的文件夹,但不能轻松地重定向任一父目录的能力无疑是明智的限制,显然这符合用户群的最大利益。
Aquarion

5

这是正确的过程

  1. 引导至安装介质,并进入命令提示符(我相信您需要先单击修复)
  2. 使用的Robocopy复制C:\用户到d:\用户:ROBOCOPY C:\用户D:\用户/ MIR / XJ / copyall
    一个。/ mir告诉robocopy镜像目录,这将复制所有文件
    。/ xj非常重要,这告诉robocopy不要遵循连接点。如果您忘记了这一点,将会遇到很多麻烦。
    C。/ copyall将复制所有属性,包括ACL和所有者信息
  3. 验证文件是否成功复制
  4. 删除c:\ Users
  5. 创建指向d:\ Users:mklink c:\ Users d:\ Users / j的结点

我执行了Jimmie指令,并且几乎要工作了。但是,我的IE有一个奇怪的问题,我无法下载文件。我找到了解决我的下载问题的解决方案,并记录在超级用户上


谢谢。我无法编辑答案,或者添加您的更改。
斯科特,2010年

为/ copyall +1我很想在很久以前添加它,但从未解决。
Jimmie R. Houts'9

3

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

Microsoft的知识库中有一些有关移动特殊文件夹的问题,这些信息可能对通读很有用。

对于无人参与脚本本身,有一个名为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,这是我从Ramesh Srinivasan撰写的扩展的“ 如何移动特殊文件夹”文章中找到的最佳信息,它深入解释了如何执行此操作以及需要注意什么(包括即使在运行了无人参与脚本之后,例如作为setup.exe的参数运行的事实,仍然存在诸如c:\ documents和设置之类的连接点,这些连接点指向您需要手动修复的旧位置(如果可能))。



Windows 8:如何在Windows 8 中将
XP1

Windows 7:如何在Windows 7安装过程中在另一个分区或磁盘上创建用户帐户:sevenforums.com/tutorials/…–
XP1

2

"C:\users"是一个与"C:\Documents and Settings"Windows XP / 2000 / NT 等效的系统文件夹,因此,即使不是无法移动,也确实很难。有多种方法可以解决此问题,方法是通过TweakUI或一些类似的技巧(而不是父文件夹)移动子文件夹,而不是使用父文件夹,有关此问题的文章很多,请参见此处:

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;zh-CN;314843

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

但是对于Vista / Windows 7,似乎此过程可能变得更简单了。以下是一些文章,告诉您如何在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/


正如我在答复中所说,您不能将C:\ Users移到其他驱动器。随着链接的重复,您可以在其中移动某些“特殊文件夹”,但是C:\ Users的重定位是不可能的。

2

有点晚了

通过将单个配置文件而不是整个目录移动,可以避免将c:\ users移至另一个磁盘的问题。

如果您在链接到新目录的c:\ users中保留一个结点,则所有路径将继续起作用,就像Jimmie Houts解决方案一样,但是我不会移动管理员,网络服务,公共等,因此所有正常的系统功能(例如Windows更新,继续正常工作。

伊恩


0

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


1
我能够重新定位用户目录。
斯科特,

0

其中大部分是从他人那里复制的,然后由现任作家tu servidor进行修改和扩展。

要最轻松地将所有用户文件和用户程序文件从引导驱动器(在我的情况下为SSD)中移出,请按照以下说明进行操作。

首先,创建一个还原点,以防万一:1.单击“开始”按钮,右键单击“计算机”,然后单击“属性”,打开“系统”。2.在左窗格中,单击“系统保护”。如果系统提示您输入管理员密码或确认,请键入密码或提供确认。3.单击系统保护选项卡,然后单击创建。4.在“系统保护”对话框中,键入描述,然后单击“创建”。

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

找到从Win7介质加载的虚拟Windows驱动器(可能是C或X),找到实际的Windows / SSD驱动器(D或E),然后找到HDD(常规硬盘驱动器)(D或E)。

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

使用Win7 Update介质,恢复模式下的驱动器设置不同,因此:X:虚拟/临时Windows驱动器,E:实际的Windows / SSD驱动器,D:HDD,我要放置\ Users的硬盘。

有人报告说,“系统恢复”模式将按如下方式设置其驱动器:C:虚拟/临时Windows驱动器D:实际Windows / SSD驱动器E:HDD,他们希望将/ Users设置为打开。

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

注意:在系统恢复命令提示符窗口中,驱动器与退出恢复模式后的驱动器不同!因此,请调整以下命令以了解驱动器如何处于恢复模式,然后稍后再进行更正。

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

要将/ Users从Windows / SSD移至HDD。/ mir告诉robocopy镜像目录,这将复制所有文件和权限。/ xj非常重要,这告诉robocopy不要遵循连接点。如果您忘记了这一点,将会遇到很多麻烦。确保没有文件复制失败(FAILED列= 0)。

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

创建一个指向新的Users文件夹的NTFS Junction /符号链接:

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

使用/ J开关创建一个硬符号链接的结点。(如果使用/ D开关,则还必须编辑注册表,因为它不是硬链接。)使用/ J,当Windows查找C:\ Users目录时,它将找到它!但是它将在HDD而不是SSD上。整rick

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

现在重新启动,您将在HDD上看到/ Users,然后就可以了。无需进一步配置或摆弄。新的用户配置文件以及所有特定于用户的数据都将存储在d:驱动器上。它是可以实现的,而无需在注册表中进行任何混乱,搜索和替换值,也不必以任何方式对新的配置文件进行混乱。完全设定并忘记。


1
这似乎是Jimmie R. Houts的答案的较长版本,但是它没有解决任何新内容或他的答案的问题(不复制符号链接)。
James McMahon

0

这并不是您真正需要的,但是如果在Windows 7中,则一个很好的替代方法是更改​​库的位置。通过这种方法,您可以将文档,图片等保存,但不能将所有配置文件保存在D驱动器中。

昨晚我创建了一个可能对您有用的工具:Set Libraries

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.