坑边闲话:Windows 是现代生活里非常重要的软件,它占据了绝大多数的桌面环境。本文以生态成熟且稳定性较高的 Windows 10 为例,讲解安装系统的正确方法。

1. 核心问题·

Windows 的安装是非常简单的操作,但是按照官方的步骤操作,会在以后的维护过程中遇到极为不利的场景,以下是几个例子:

  • 在一个 2TB 的巨大 SSD 上不分区,然后安装系统。这样做非常简单粗暴,用起来最为简便,因为这种环境里不存在分区的概念。然而,系统一旦崩溃,就需要对整个硬盘里的重要数据进行备份,代价比较大,而且在备份完之前不能进行系统安装。
  • 现在市面上绝大多数笔记本电脑和台式机都可以安装两个及以上的 M.2 固态硬盘,用户可以选择 512GB 系统盘搭配 2TB 数据盘的方式进行组合使用,优点是比较灵活,缺点是带来了略高的发热及功耗。但是在重装系统时,将会失去系统盘里的所有数据,包括 AppData 里面的所有缓存数据。此外,很多软件默认把对用户不可见的缓存、配置放在 C:\Users\YOURNAME 目录里,这些数据对用户来说至关重要,盲目格式化重装可能也会丢失这部分数据。

以上两个场景比较完整地展示了系统维护过程中的痛点,因此我们希望有一种方法,可以自由重装的同时,能保留住系统之外的所有数据。

  1. 解决方案

本文提供的方案比较复杂,需要用户对 Windows 的内部机理有深刻的认知。

1.1 切换到 Administrator 用户·

假设在我们安装 Windows 时配置的用户就是现在要更改的用户,不妨称它为 newton. newton 需要许多配置才能实现最终需求。在开始之前,我们需要进用户和组管理界面,将 Administrator 用户启用且设置一个初始密码。

注意,后面会频繁对 Administrator 用户进行登录、注销,因此不宜将密码设置得过于复杂。

激活 Administrator 之后,我们直接切换到该账户。随后,在 Administrator 用户的桌面环境里,将 newton 账户禁用。随后直接重启。

重启的目的很简单:保证机器起来之后,newton 账户处于绝对不活跃的状态。如果我们不禁用用户,仅仅只是重启,则开机之后还有部分属于用户的缓存文件被加载,容易造成后续步骤失效。因此禁用加重启可以绝对保证后续步骤没有后患!

这么做的目的很简单:那就是等会儿我们要移动 newton 的家目录,如果不禁用而直接重启,那么在开机之后 newton 的许多系统相关文件会被打开,我们的移动操作会报错。

1.2 复制 newton 的家目录到新的位置·

newton 用户的目录一般会在 C:\Users\newton 里,我们直接将该目录复制到 D:\Users\newton 即可。

1.3 修改 newton 的注册表配置·

注意:不要直接剪切,否则有些 UWP 应用会启动失败。等到再登录一次 newton 之后,即可删除 C:\Users\newton 旧目录。

如果你的普通用户有很多,则可通过下述命令获取目标用户的 SID

1
wmic useraccount where name="USER" get sid

随后打开注册表编辑器,定位到:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

里面有很多子项,所有的项都是以用户的 SID 命名,每个项里有对应的 ProfileImagePath 字段。将该字段改掉即可实现家目录修改。

图 1. 修改相关的注册表项。

2. 重置 newton 用户的家目录文件权限·

一般我们认为,家目录的所有文件均属于用户个人所有,因此家目录的文件权限很简单。如果你家目录的文件权限很复杂,则不宜采取本文提供的方案。

新系统与原先的系统是不同的,尽管用户名可以设置得一模一样,但是本质上新同名用户与原先用户是不同的。这一点可以通过查验前后的 SID 得到证明。因此,原先的用户文件的访问控制列表中的 SID 与现有用户不同,我们需要在文件管理器里将它们批量修改,具体以下三条 ACL 为准:

1
2
3
SYSTEM 用户
Administrator 用户
newton 用户(新系统)

以上三个用户拥有所有权限。可通过 File Explorer 的高级安全修改功能实现本配置。

3. 重新激活 newton 用户·

完成上述步骤,即刻在 Administrator 会话里重新打开 newton 用户,随后登录到 newton.

由此,真正实现了所谓的用户文件转移。注意:

  • 保证前期 newton 用户被彻底关闭
  • 保证转移文件之后修改访问控制列表

Just enjoy!