如何将程序文件从一个驱动器移动到另一个驱动器?

如何将程序文件从一个驱动器移动到另一个驱动器?

我的 Windows XP 机器上已经安装了很多程序,但现在面临着C:\驱动器中可用空间不足的问题。

我知道普通复制不再有效。通过 Google 搜索,我看到了不同的方法,但我不确定是否要尝试,因为我担心这会毁掉我的 XP。

有什么方法可以将文件移动Program Files到另一个驱动器吗?

答案1

程序文件不能移动。 Program Files 目录中安装的软件通常与系统的其余部分紧密相关,移动程序会破坏它并在其他地方引起几十个杂项问题:文件关联中断、卸载程序...

由于这些联系是由安装程序创建的,因此您可以通过卸载软件并将其重新安装在不同位置来干净且相对安全地“移动”程序文件,但这需要大量的手动工作,并且该过程可能会无意中清除用户空间中的数据(例如设置)。

假设您的程序文件当前位于 NTFS 分区上,您可以将数据物理地移动到另一个驱动器(不是网络共享,最好不是可移动驱动器)并在其原始位置创建连接。其他软件(包括操作系统)仍将能够C:\Program Files\正常访问数据,但它们不再占用该特定驱动器上的空间。

有一些例外,其中连接点的行为有所不同。也许最值得注意的是,删除连接点不会删除其目标。总的来说,它们足够透明,这种方法不太可能导致重大问题。不过,为了安全起见,我建议只为几个大(子)目录创建连接点,而不是整个 Program Files 文件夹。

创建此类连接的命令是:mklink /J "C:\Program Files\BF Program" "D:\Program Files\BF Program",但 mklink 命令是在 Vista 中引入的,不适用于 Windows XP。Windows XP 的替代方案是连接点来自 Sysinternals,其语法很简单:junction "C:\Program Files\BF Program" "D:\Program Files\BF Program"

如果尽管使用了 NTFS 连接,移动程序文件仍然出现问题,则可以通过执行junction -d "C:\Program Files\BF Program"并移回相应的文件来恢复到以前的情况。

答案2

我决定写一篇回复,因为网上确实没有关于这个主题的好教程。我不得不对我的系统这样做,因为为了从运行 Win XP 的 SSD 中获得速度,扇区必须对齐,而我将我的扇区对齐为 4K,这非常快,但这会将我的有效 SSD 大小从 32GB 减少到 4GB 的可用空间。我仍然有 32GB 的空间,只是使用速度比平时快了 8 倍 - 哈哈。啊啊啊,速度的代价。

希望这能帮助那些也想释放系统空间的人。如果你执意要这样做,有一种方法。显然,你知道其中的危险。也就是说,在你做任何事情之前,先创建系统备份。我个人使用驱动器映像 XML,或“重新做”备份。你需要一个外部硬盘来备份。重新做会刻录到磁盘(我用“starburn 9.8”刻录),并且可以恢复完全无法启动的系统。你还需要一个刻录机程序来刻录 Linux 发行版的副本。顺便说一句 - 我这样做是因为高容量 PATA/IDE 固态硬盘很贵,但我需要速度。这里推荐的所有程序都是我自己用过的免费软件,而且很喜欢。这个过程应该适用于台式机和笔记本电脑。好的,为了比较,我先介绍一下我的系统背景。

系统 - 东芝 Satellite M55-S3294 笔记本电脑,约 2005 年

操作系统 - Win XP Professional Service Pack 3 32 位 (N-Lite[ed])

组件 - 32GB Transcend PATA [仍可找到价格低于 100.00 美元的 SSD(主驱动器)

 - 8GB Sandisk Extreme Pro 95/60 SDHC formatted to NTFS (Wiped first w/DBAN)
   for environmental variables (TEMP, tmp folders, WINDOWS folder) <-- super 
   speed boost. Don't mess w/ slow cards or off brands- they're not worth it.

 - 1.5GB RAM (Max for my system)

 - Dummy Disk to make removable disks appear fixed (REQUIRED IF YOU WANT TO DO 
         THIS) and can be found here: 

http://www.prime-expert.com/articles/a05/enabling-multiple-partitions-on-removable-usb-storage-devices.php

         DO NOT INSTALL YET !!!

       - DVD Super-Multi Drive

       - 4 USB 2.0 ports

       _ PCMCIA slot. I'll be using this in the future for 
         USB 3.0 (More speed WOOT)

外围设备 - WD MyBook 3TB 外置硬盘 USB 3.0(未安装 Bloatware)

我的系统几乎是即时的。当我在 MPC-HC 上播放视频并浏览网页时,Visual Studio 2010 可在 3 秒内加载。对于 9 年历史的系统来说,这还不错。

         ***WARNING***

这些说明仅适用于 Win XP,只有具有中级到高级计算机技能的人员或喜欢裸体煎培根的人才能尝试。;-)

你需要:

  1. 来自上述链接的虚拟磁盘驱动程序软件。请勿安装。---必需!

  2. 外部硬盘(笔记本电脑/台式机)或第二硬盘驱动器(台式机)

  3. 刻录到磁盘的实时 Linux 操作系统。确保它是实时版本。UBUNTU 10.xx 或
    更高版本。早期版本无法处理文件名中的空格。我喜欢 Ubuntu 12.04:

  4. 命令行程序“Junction”。别担心,我会指导您完成它。在这里获取它: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

  5. 7-zip 归档程序(或类似程序)
    (.msi 安装程序为您提供右键单击功能)
  6. 主磁盘驱动器上有 800 MB 可用空间
  7. 两张可供刻录的空白 CD。

该怎么办:

  1. 下载到桌面: - 备份软件(除非已经安装) - 刻录软件(StarBurn) - 虚拟磁盘驱动程序 (.exe) - Junction(压缩包) - Ubuntu(ISO) - 7-zip

                   DO NOT INSTALL ANYTHING YET!
    
  2. 安装 StarBurn 并查看提示,许多新版本的免费软件都想安装工具栏、更改您的主页并在您的系统上安装垃圾软件。我使用的是 9.8 版 (StarBurn),很难找到。

  3. 安装或将备份软件刻录到磁盘。
  4. 进行备份。这将需要一段时间。
  5. 将 Ubuntu 刻录到磁盘。
  6. 安装 7-zip
  7. 右键单击 Junction 文件夹->选择 7zip > 解压到“Junction”(解压的文件夹应出现在桌面上)
  8. 断开所有外围设备 - SD 卡、外部驱动器等,除了您要将程序文件文件夹移动到的驱动器。应连接到系统的只有主驱动器和将成为程序文件新家的驱动器。
  9. 双击运行虚拟磁盘驱动程序可执行文件。这将保留一个永久驱动器号(用于连接到计算机的每个设备),即使将来设备插入其他端口,该驱动器号也不会改变。换句话说,操作系统将始终能够找到包含程序文件的设备。操作系统现在将把您的外部磁盘视为本地磁盘。
  10. 拔掉电缆、关闭路由器或交换机,或者像我的笔记本电脑一样关闭 NIC 电源开关,彻底断开与互联网的连接。彻底断开连接。
  11. 关闭系统
  12. 开机进入BIOS,检查第一启动设备是否为光驱,如果不是,则改为第一启动设备。
  13. 插入 Ubuntu(或其他 Linux 发行版)磁盘,退出 BIOS 并关机。
  14. 启动 Ubuntu。(选择“试用 Ubuntu”,而不是“安装 Ubuntu”)

                       ***Here's where the fun starts***
    

    当 Ubuntu 完全加载时:

  15. 打开要将文件夹移动到的驱动器(位于屏幕左侧)并创建一个新文件夹。使用命名约定将该文件夹与 C: 驱动器上的文件夹区分开来。我使用“_PROGRAM_FILES”。下划线和全大写让我知道它是外部驱动器上的文件夹。以下划线开头的文件夹名称也不会被服务器索引 - 请记住这一点。打开文件夹。

  16. 打开 C: 驱动器并导航到 Program Files。打开文件夹。两个窗口都应该在桌面上打开。勾选视图菜单下的“显示隐藏文件”复选框。突出显示/选择 C:\Program Files 中的所有文件,然后将它们拖放到打开的新文件夹窗口。将出现复制对话框。注意:使用 Linux 发行版复制这些文件的原因多种多样。如果您查看过创建连接、符号链接和硬链接的论坛,您就会知道有成千上万的帖子,讲述人们在尝试复制或移动系统文件时遇到的问题。从损坏的传输到无法复制到新文件夹的权限,应有尽有。简单来说,Windows 内置的复制软件简直糟透了。除非您想要问题,否则不要使用它。此外,Linux 传输这些文件的速度平均比 Windows 快 5-7 倍。传输完成后,检查新旧文件夹的文件夹大小,以确认它们的大小相同。
  17. 关闭 Ubuntu((磁盘应该会弹出)你可能要在大约 30 秒后按下回车键 - 这是 Ubuntu 的怪癖之一。)并在管理员帐户下重新启动 Windows。等待所有启动程序完成运行,不要打开除下面提到的以外的任何程序。这是棘手的部分 >---
  18. 打开命令提示符。(Windows 按钮 + r --> 输入“cmd”)如果您下载并解压了 Junction 到桌面,则需要将目录更改为 Junction 文件夹。在命令提示符下输入此内容(不带引号):"cd Desktop" 命令提示符应将您带入桌面文件夹。现在 cd 进入 Junction 文件夹 --> "cd Junction"。您现在应该在 Junction 文件夹中。Junction 必须从 Junction 文件夹内部运行。++ ...
  19. 转到我的电脑 -> C: -> Program Files。突出显示并按住 Shift + Delete 删除文件夹中的所有内容。您将收到警告;继续删除。(命令行位于 windows 文件夹下,因此一切正常。此外,如果出现任何问题,您的所有 Program Files 都在另一个驱动器上。)在资源管理器窗口中,上一级并按住 Shift + Delete 删除 Program Files 文件夹。关闭资源管理器。
  20. 将焦点返回到命令行。
    • 我们要做的是使用 Junction 创建一个符号链接,它是比文件系统级别更低的重新解析点。无论出于何种目的,操作系统都会将其视为实际文件夹 - Junction 将在旧 Program Files 文件夹所在的位置创建一个新文件夹,这就是需要删除原始 Program Files 文件夹的原因。为了保持文件系统的完整性,Junction 在 C: 下创建的文件夹应与旧文件夹同名。此文件夹将只保存一个文件,该文件是一个字符串指针引用,指向程序文件先前移出磁盘的文件夹的位置。你准备好了吗?
  21. 您需要输入目标文件夹的完整文件路径(该连接点将在旧 Program Files 文件夹所在的 C: 驱动器下建立),然后输入源文件夹(您要将 Program Files 移动到的文件夹)的完整文件路径。例如,假设您要将文件移动到的文件夹位于 J:_PROGRAM_FILES 。语法如下:

    连接点 -s 目标源

    你实际要输入的内容是:

    连接点 -s "C:\Program Files" J:\_PROGRAM_FILES

    看一下,注意 C:\Program Files 被引号括起来了。这一定是因为文件路径名中有空格。使用 Junction,如果路径名中有空格,则整个路径名必须用引号括起来,否则会抛出错误。如果语法正确,junction 会告诉您路径已成功创建。恭喜 - 您刚刚在 Windows XP 中成功将您的程序文件从磁盘符号链接。

  22. 重启电脑两次。更改系统文件时务必重启两次。第一次重启会慢一点,但第二次就没问题了。重新连接到互联网,一切就绪。

    从现在开始,无论何时您将程序安装程序到目标文件夹 C:\Program Files,它实际上都会通过目标文件夹进行符号链接并安装在磁盘外的源文件夹中。太棒了!!!

注意事项:切勿在已符号链接的文件夹中进行符号链接。如果这样做,您将会遇到比您想象的更多的问题。如果您决定也对桌面本身进行符号链接,请不要使用任何指向桌面程序文件的快捷方式。事实上,请从桌面删除所有这些快捷方式,并使用“开始”-->“所有程序”。嵌套符号链接也会对防病毒扫描程序造成严重破坏,使它们陷入无限循环,这很可能会锁定您的系统。

答案3

这里有三条建议;

  1. 您可以复制文件并创建一个NTFS 连接点或链接对他们来说,这可能很棘手。如果做错了,可能会导致东西无法使用。
  2. C:卸载并重新安装程序。重新安装时,将它们指向新驱动器。请注意,有些程序由于编程方式的原因,只能安装到驱动器上。
  3. 安装新的更大驱动器,全新安装 Windows 和所有程序,然后移动数据。这可能是最稳定的方法。

答案4

如果一开始就安装几百个程序(在 Program Files 中),那么我估计这个简单的想法需要几个月的时间。但如果计划使用 3 个分区的硬盘(XP、PROGRAM 和 DATA),那么就分区(例如)2 TB SATA 硬盘,其中 100 GB 用于 XP,500 GB 用于 PROGRAM,1500 GB 用于 DATA。(第二个驱动器稍后将成为 DATA2)。

  1. 但第一步是先创建 XP 100 GB 分区。(驱动器的其余部分必须为空)。现在安装 XP,尽可能少安装应用程序。
  2. 然后对 D 盘和 E 盘进行分区并格式化(这样 XP 就一定会变成 C 盘,并且是唯一不能更改的驱动器号)
  3. 现在请不要安装任何驱动程序!!! 而是将整个“程序文件”复制到驱动器 D。
  4. 现在启动 REGEDIT。
  5. 搜索更改字符串开头、中间或结尾包含“C:\Program Files”的每个键、值和数据。不管它是键、值还是数据。只需将驱动器号从“C”更改为“D”即可 - 不管其他语法如何。(休息一下,但记得不时按 F5 键,因为它可以节省工作)。
  6. 在安装最少的 XP 系统上,这项工作可以在 3-4 小时内完成。如果安装了所有驱动程序和大型应用程序,那么几个小时就会变成几周!
  7. 再搜索一次与 C 分区相连的 Program Files。然后从 C 分区中删除“Program Files”。并清空垃圾箱。
  8. 现在安装 Windows 应用程序,如游戏和您可能需要的其他一切。然后安装驱动程序。然后激活并安装您的应用程序。

如果“Program Files”再次出现,则是由于安装导致的。只需卸载并仔细阅读安装信息即可。

甚至可以将“文档”与“设置”分开,整个 Windows 都是基于系统注册表构建的,而不是相反。但更改“Program Files”分区的“危险性”要小于注册表中的其他深层更改。对于 Windows Vista、7、8 和 10 是否可行,我不得而知。

除非您了解一般原则,否则请不要尝试进行上述注册表更改。这不是普通的 1-8 指南。

相关内容