【保留应用+设置|图文教程】将32位 Windows Vista/7 升级到64位

众所周知,巨硬微软官方并没有给出 32 位 Windows 升级到 64 位 Windows 的方案。

在 32 位 Windows 系统中,你是根本没办法运行 64 位的 Windows 安装程序的。

你可能会想:如果我把 64 的 install.wim 替换到 32 的安装程序呢?很遗憾告诉你,也不行。安装程序会在升级时校验镜像。

这个问题一次困扰了我很久,特别是在将 Windows 1.x 一路升级到 Windows 11 的时候,32 位无法升级 64 位是一个很大的难题。

而在我研究了一坤年之后,研究出一堆方案之后,我找到了一个尽可能迁移,又能保留64位系统特性尽量正常使用的方案。


前言

异时空同位体

如果你也研究过 32 To 64,在 Bilibili 找资料时你应该看过以下视频:

[R.CPDS|v52] 我成功地把32位系统替换成了64位系统了 (在Vista,Win7,Win8.1,Win10)

此视频是跟我同龄的UP主 R.CFDS(原名 Ryan730,现名 GaltonLai)研究的方案。虽然方案确实成功了,但在我看来仍然存在着以下不小的问题:

  • 并没有完全迁移注册表,某些程序的数据和信息将无法迁移;
  • 仅仅是成功迁移了应用程序,并没有迁移系统设置;
  • 方案中根本没有考虑到“用户”的概念,而用户也会有自己的用户设置;

当然我在这里并没有贬低这位UP的意思,UP也算是提出了一个还算不错的解决方案。但我认为UP的方案也还是有改进空间的。

而我想尝试用一种全新的思路,解决上面的这些问题。

先决条件和注意事项

  • 此方案是针对 Windows Vista/7 的,因为 Windows 8+ 版本引入了 Appx、微软账户等多项新技术,我仍然没有很好方案能够迁移这些内容。低情商:摆烂(P.S. 有靓仔告诉我xp64位,不要想,在我的实验中,xp32位无法升级64位,xp64位也无法升级vista64位,属于是啥用都没有)
  • 无法迁移 Microsoft Office。至少在我的实验中,Office 2016 是无法迁移的。UP预计 2007 以及之后的版本都无法迁移,而 2003 之前的版本是可以迁移的(还有谁会用这么老版本的Office啊mmp)。所以你如果已经安装了无法迁移的 Office,请提前将其卸载!一定要提前卸载!不然迁移过程中会很麻烦!并且升级之后 Office 会在系统里动弹不得,无法卸载,也无法重装!(大不了先卸载,升级后重装)
  • 系统补丁和运行库同样无法迁移。但是在我的方案中,它们的安装信息和某些安装的迹象(其实就是某些安装残留233)仍然会留在系统中。升级之后可以重新安装补丁和运行库,经过我的测试是可以重装的,当然如果你为了保险起见,也可以将运行库全部卸载,然后再进行升级。
  • 对系统修改大的程序,或者就是专门修改系统的程序也大概率无法迁移。这个很好理解。说是32位升级64位,本质上其实还是重装,系统文件肯定是逃不过被重装回去的。
  • 此方案更适合用于迁移系统设置,迁移第三方应用程序其实就是玩玩。毕竟是从x86到Wow64,兼容性上可能会出现一些问题。很多第三方软件也会分别有32位和64位版,所以应用程序我更建议直接重装
  • 应用程序创建的右键菜单只能在Wow64中使用,在64位应用程序(比如系统的资源管理器)无法使用,解决方法看上面。
  • 无法迁移用户的密码。你需要尽可能多知道系统里用户的密码。然而用户自己创建的账户还好,如果是各种程序创建的服务账户会更难受,因为你不可能知道它们的密码,甚至它的密码在创建时就是完全随机的,而不知道密码的话将会导致这个用户的凭据和EFS加密等信息全部丢失,或使用这个用户的程序、组件无法正常使用。不过我感觉迁移用户密码这个有希望,如果以后研究出来,我也会发新文章/方案的。如果有大佬知道怎么迁移,欢迎评论区留言~
  • 一些用户安全设置可能无法迁移。例如:密码的最大使用期限、密码的最小长度等。
  • 家长控制的某些设置迁移后会变得不正常。真有人开着家长控制干这个?
  • 本教程默认你后面就用不到这个32位系统了。如果你在迁移之前把这个32位系统克隆了一份,特别还是在一台电脑或同局域网电脑安装,这两个系统大概率冲突,而且别的电脑大概率也会把它们认成同一台电脑。

需要准备的内容

  • 64位 Windows Vista/7 系统镜像,这个肯定是必须的废话。可以去 msdn.itellyou.cn / next.itellyou.cn 下载原版系统镜像,这里不过多赘述;
  • 一个 Windows 预安装环境(PE系统)。站里有很多UP推荐PE。推荐一下我好哥们的 GlassPE,由 Bilibili UP 爱玩电脑的命令提示符 制作,官网为 https://glasspe.cn。推荐此PE的原因是它已经内置了下一条提到的工具,然而此PE对系统占用较高,对老电脑并不是很友好。你也可以用一个你用着顺手的PE,微PEFirPEEdgelessHotPE雷电PEU启通,你随便用,顺便说一下U启通也已经内置了下一条提到的工具。不推荐老毛桃大白菜,因为它们的安装工具一般会在系统中写入应答文件来执行它们的**行为,而此行为会影响我们的后续操作。不建议用双系统,因为 PE 系统一般有现成的 SYSTEM 权限,便于对系统操作;
  • Registry Workshop。这是一个强大的 Windows 注册表管理+编辑软件,吊打 Windows 自带的 Registry Edit (regedit)。这个软件只需要在PE里使用,上一条提出的 GlassPE 和 U启通 已经内置了此工具,当然这个软件在网上一搜也能下载到。
  • Dism++。这个不强制要求,只是为了方便挂载注册表,同样只在PE里需要用到。你一般不用自己准备,因为市面上的PE一般都自带因为这个软件本来是用来装系统的
  • 一个清理系统注册表 *.sys 的工具。这个主要是看机型。如果32位系统和64位系统所处的硬件环境都一样(特别是硬盘(的接口)和主板),则不需要进行什么额外操作。反之,如果硬件环境已经发生了很大的变化,甚至是SCSI主控都变了,此时就需要把 HKLM\SYSTEM 注册项中有关驱动 (*.sys)的注册项全部删除。但即使使用上条提到的 RegWorkshop 工具,删除这些注册项仍然是很麻烦的事情。所以为了快速删除这些项,我使用易语言编写了一个快速清除注册表 SYS 的清除工具,我会把程序本体和源码都放在下面的链接中:https://ctrlmmc.lanzouw.com/b00zxnf5be,密码:1xvg
  • SIDCHG64,官网为 https://www.stratesave.com/html/sidchg.html。它可以用来修改64位系统的SID。当然这个软件是收费的,所以你可以去上面那个链接看看,有惊喜;
  • NSudo,用于提升 SYSTEM 权限,你可能会用到;
  • Windows 轻松传送。这个不需要准备,系统自带。在迁移过程中你大概不会用到它,详细后文会讲。
  • 以上软件可以从 https://ctrlmmc.lanzouw.com/b00zxnf5be 里获得,密码:1xvg

升级前的 32 位系统

以下是我准备的 32 位系统:

我是拿 Vista 做的示例,Windows 7 我也做了同样的事情。

我准备了三个用户:Hana、Taotao 和 Usera,其中 Hana 和 Taotao 都设有密码,并且系统默认输入法为 英语(美国)。

其中主账户是 Taotao,这是此账户的桌面。我还在桌面上面用网易云图标摆了一个大大的网易云 Logo。

在 Windows 7 中,我使用的是 Windows 7 自带的“建筑”主题,并且窗口标题栏的大小我改为了19(这是 Vista 的大小)。

以上是系统中所有已安装的程序。(不要在意那个 Windows ME 卸载程序)

时间和日期的格式也被我进行了修改。

安装了 Everything,并且设置了服务实现开机自启动。

在网易云里,我已经提前登录好了账号,并且播放列表里有两首歌曲。

在安装网易云时,我还把网易云设为了默认播放器,估计这是我唯一一次把网易云设为默认播放器。

在系统自带远程桌面连接中,我已经连接过其他计算机,并且保存了凭据,直接回车即可连接。

同时我在文档里也设置了一个EFS加密文件夹,里面放了一个文件,只有拥有此证书的用户才能打开。(这个系统加密真的有人用吗)

顺便提一下,我的桌面放在了 C:\Windows\Desktop;

以及我的文档放在C盘根目录。

安装了 7-Zip 和 UltraISO,并且它们都有右键菜单。

详细看一下用户。每个用户所属的组都不一样。

这是 Hana 用户。桌面上的一堆网易云是因为我和 Taotao 共用的一个桌面。

在 Vista 中我设置了单独的桌面背景和鼠标指针。

在 Windows 7 中我则使用了 5 张桌面背景的幻灯片放映。

从这里也可以看到 Hana 没有 Taotao 的证书是打不开 Taotao 加密的文档的。

这是 Usera,用着一套极为经典的主题。

也是一个妥妥的标准用户,管理员运行需要凭据。

并且我也为它启用了家长控制,阻止了“纸牌”游戏。

教程

在下面的教程中,Windows 预安装环境(WinPE) 将使用 微PE(WEPE)。

迁移方式の选择

经过一坤年的研究,在一堆方案中我选择了几个方案,你可以按需选择。

此教程在迁移用户时有两种方案供你选择:

  • 硬核用户法:直接使用来自32位的用户配置,包括用户文件和 ProFile 注册项,用户迁移更加彻底,但会导致迁移的用户可能存在暗病,比如升级到 Windows 8.x 时 Modern APP 将无法使用;
  • 妥协用户法 (推荐):在64位创建好用户,再把32位的用户文件替换过去。其实此方案和硬核用户法最终的效果相差不大,而且不会存在我已知的暗病,就是步骤会稍微麻烦一些。

在迁移应用时同样有两种方案选择:

  • 硬核软件法:通过简单修改注册表,直接将32位和64位程序路径放到一起(Program Files)。但如果你后面要升级到别的系统的话,Windows 安装程序会重新把32位和64位程序分开,但安装程序又不是太聪明,容易导致程序紊乱;
  • 妥协软件法 (推荐):在硬核软件法的基础上,进行一次升级,让安装程序自动修改注册表。因为要经过 Windows 升级程序,此方案可能会损失一些你原来的设置和痕迹(比如,一些组策略设置,开始菜单里最近打开的程序,某些系统文件夹的安全设置等)。但如果你还要升级到别的系统,那无所谓了。

同时,VistaWindows 7 在迁移的步骤上也会有些细微的不同。但即使包含上上面4个方案,整个迁移步骤的差异也不是很大。所以在有差异的地方我会特意标记处理。

迁移前需要准备的内容

请先别急着迁移,回到32位系统,还需要准备一些东西。

在你的32位系统中打开 命令提示符(cmd.exe),接着敲:

wmic useraccount get sid,name,fullname,description >> {保存到某个TXT文件路径}

例如我保存到了 C:\from_old_computer\Users.txt,然后就可以用记事本打开这个文件,看到刚才命令输出的内容。建议各位在操作的时候可以保存到其他盘,专门新建一个文件夹来放这些文件。

还有一件事,你要记住32位系统的计算机名,右键桌面“计算机”然后属性(或者再点一下“高级设置”)就可以看到计算机名了。把它记在某个(新建的)TXT文件里,或者记在纸上/心里。(大小写最好要区分)

按道理来说,这样操作完之后就可以了。但是,为了避免方案出现什么幺蛾子,你也可以选择进行下面 Windows 轻松访问 的备份。

Windows Vista 使用 Windows 轻松传送(选做,应该用不到)

STEP 1 在“开始”菜单中找到“Windows 轻松传送”,Vista/7 都是位于 附件>系统工具。你也可以直接运行 migwiz.exe。

STEP 2 依次选择 下一步>启动新的传输>我的旧计算机>使用 CD、DVD 或其他可移动介质。

STEP 3 选择保存到哪里。看不懂就选 外接硬盘或网络位置。有人会保存到别的地方吗?

STEP 4 选择保存的位置,然后下一步。建议和之前的 Users.txt 放在一起,好找。密码最好设置一个,似乎不设置密码似乎就不会迁移受保护的内容(我也不是很确定💦)。

STEP 5 选择 高级选项,它会默认选择所有用户账户、文件和设置。

STEP 6 然后你会看到自定义选项。记住在这里把所有默认选上的“共享文件夹”“文档”“其他位置的文件”去掉,不需要 Windows 轻松传送 来传送这些内容。

STEP 7 点击下一步,Windows 轻松传送 将开始备份文件,这个时候请坐和放宽,等待备份完成后,关闭即可。

Windows 7 使用 Windows 轻松传送(选做,应该用不到)

STEP 1 同样在 附件 中找到 Windows 轻松传送。

STEP 2 依次选择 外部硬盘或 USB 闪存驱动器>这是我的旧计算机。

STEP 3 你会看到系统中的所有用户。点击每个用户和共享项目的“自定义”,将(公用)图片音乐什么杂七杂八的去掉,只留下 Windows 设置。

STEP 4 这还没完。点击“自定义”中的“高级”,你还是会发现 Windows 轻松传送给你选了一堆文件,直接把系统盘前面那个勾去掉,不传送任何文件。

STEP 5 建议设置一个密码,因为不设置密码似乎就不会传送受保护的内容(我也不是很确定💦)。点击“保存”然后选择一个保存位置。

STEP 6 保存完成后就可以跟着它的提示在一堆废话后关闭轻松传送。

完成这些步骤后,就可以关闭 32 位系统,正式开始系统迁移。

暴风雨前的宁静

如果你想要更换机器(例如 升级SCSI主控,硬盘等),请在这一步更换,将原来的硬盘接在新电脑上(如果不换硬盘)或者想个办法把老硬盘的数据迁移到新硬盘(如果想换硬盘)。

注意一下换硬盘的时候最好把硬盘MBR签名系统卷序列号也改成和之前一样的,我在这里就不演示了,DiskGenius 就可以改,傻瓜操作。

迁移第一阶段

STEP 1 进入 WinPE,找到32位系统安装的地方,在根目录新建一个文件夹,名称自定,确保不会发生重名就行。我这里起名为“$WinOld”,下文我就把这个文件夹叫做 $WinOld 了。这个盘是用来装系统的,如果你的系统盘空间不够富裕,你可以放在其它盘,但务必是NTFS文件系统。

STEP 2 回到根目录,选择以下文件夹:

$RECYCLE.BIN | PerfLogs | Program Files | ProgramData | Windows | Users(用户)

然后将它们移动(剪切到)到刚刚新建的文件夹($WinOld)中。注意一定是移动而不是复制,复制会导致安全信息丢失!

STEP 3 (选做,推荐) 如果你想方便后续操作的话,请把这个 $WinOld 文件夹做一个副本(没错,再复制一遍),放到哪里都行,文件系统不做要求。这是为了方便后续 Dism++ 挂载注册表。但是不建议用 文件资源管理器 复制,因为它碰到软链接就会卡住,非常的讨厌。你可以用 7-zip、FastCopy 等软件的复制(虽然 7-zip是个解压缩软件),就像我这样把它复制到了根目录下 $DismWIN 这个文件夹(下文我同样也把这个文件夹叫做 $DismWIN):

↓复制中途出现报错这样的报错也不用管,只要不是整个复制都报错炸掉就没问题。↓

下面这样就是复制完成了,点击“关闭”即可。

STEP 4 如果你感觉还想做点什么,请把根目录里的 Documents and Settings 文件夹(准确来说是软链接)删掉。

STEP 5 现在请用你最拿手的方法来安装64位系统。推荐使用 Windows 原版安装、WinNTSetup 和 Dism++。以下是一些注意事项:

  • 请确保你安装的64位系统版本和原先的32位系统版本一样!例如你的32位系统版本是 Windows Vista 旗舰版,64位系统也请安装 Windows Vista 旗舰版。不要安装别的版本,例如专业版,这样会导致迁移完成后某些程序仍然会认为这是个旗舰版系统;也不要换成其他系统,例如安装 Windows 7 旗舰版,我并没有这样测试过,不过大概率出问题,后果自负。
  • 请确保新安装系统的盘符和旧系统的盘符是一样的!不一样你还要折腾注册表,非常麻烦。
  • (接上一条)如果你是 Windows Vista,请注意,64位的 Windows Vista 默认系统盘符是在 D: ,就很逆天,而且 WinNTSetup 也无法更改这个盘符,所以我的建议是使用 Windows 原版安装。

下面是使用 Windows 原版安装 Windows Vista 的示例:

5.1 在 PE 系统中(真的建议微PE了),确保系统盘符和原来的旧系统盘符是对的上的(一般就是C盘,对吧?)

5.2 准备好 Windows Vista/7 安装介质,按照全新安装系统的方法,开始安装系统。

注意这里一定要选择和 32 位系统对应的版本。

选择“自定义 (高级)”选项,然后选择之前32位系统所在分区,然后直接下一步开始安装。注意如果你没有做 STEP 3 的话,这里会提示检测到以前版本的 Windows 安装,然后要给你迁移到 Windows.old 吧啦吧啦的,实际上就是要把那个 Documents and Settings 移动过去,直接确定就是了,你后面也用不到这个 Windows.old,需要的系统文件我们已经提前放到 $WinOld 里面了。

5.3 然后去泡一碗泡面。

5.4 系统安装完成,进入了 OOBE。

如果你是使用安装器安装,请重新引导到新系统,完成 Sysprep,直到进入 OOBE 就可以了,然后进入下一阶段…….

迁移第二阶段

STEP 1 确保你已经在 OOBE,不要动 OOBE,按下键盘 Shift+F10 打开 命令提示符。

STEP 2 用这个命令提示符打开 notepad 和 lusrmgr.msc(请在命令提示符里输入这两个然后按下回车),然后在 notepad (记事本) 上面的菜单 > 文件 > 打开,找到你之前在迁移前需要准备的内容步骤中导出的 TXT 文本文档,打开它;在 lusrmgr.msc (本地用户和组) 中,打开用户。

STEP 3 先把系统内置的 Administrator 和 Guest 用户,按照 Name=用户名、FullName=全名、Description=描述 填入它们在 lusrmgr 中各自的位置,下面的那些复选框不用动。(下面这张图应该够清楚了吧?)

P.S. 如果内置的 Administrator 和 Guest 用户在旧系统里被你改名了并且你无法区分,请看TXT后面的SID那一列,Administrator 对应 S...500,Guest 对应 S...501。

STEP 4 完成修改内置用户后,在 lusrmgr 空白处右键,点击“新用户”,把TXT列表里的用户在这里一个一个创建出来。

注意这里创建是有先后顺序的!这个顺序就是根据TXT中SID那一列来的,SID尾号(这个准确叫RID)为1000的是你第一个要创建的用户,比如我这里尾号1000的用户是 Hana,那我就要先创建 Hana 这个用户。同样是按照 Name=用户名、FullName=全名、Description=描述 填入它们在 lusrmgr 中各自的位置,下面的那些复选框同样不用动。以此类推,接下来就是1001、1002……对应的用户就是 Taotao,然后是 Usera......

注意下创建时密码需要和原来一样!这样才能恢复凭据。(如果你知道密码的话)

接着创建,1003对应 HelpAssistant,诶?1004呢?怎么直接变成1005了?这说明SID尾号1004的这个用户在原系统里已经被删除了,我们现在需要先创建一个1004用户,用户名等内容可以随便填,但要记住,等会要把它删掉。

创建完成1004这个本来不存在的用户之后,就可以接着创建1005用户。遇到不存在的用户就随便创建一个,直到把所有用户创建完成。

STEP 5 创建完成所有用户后,就可以把刚才创建过程中那些“不存在”的用户统统删掉。

STEP 6 这个阶段的所有操作已经完成。请关闭除 命令提示符 以外所有你打开的窗口,在命令提示符中用 shutdown /s /t 0 关机,或者用 shutdown /r /t 0 重启,将机器重新启动到 Windows PE 预安装环境,然后进入下一个阶段……

迁移第三阶段(长文预警)

STEP 1 欢迎回到PE!请准备好之前在前言 - 需要准备的内容中的 SIDCHG,并且在 SIDCHG 所在位置打开命令提示符。

STEP 2 SIDCHG 是一个命令行工具,请按照以下的方法使用:

sidchg.exe /OS={Windows所在路径} /SID={需要修改成什么SID} /F

以下是每个参数的解释:

/OS:Windows 所在路径。比如 C:\Windows 或者 D:\Windows。打开资源管理器看看你系统盘现在在哪个盘符,就填哪个盘里面的 Windows;

/SID:其实上文已经提到过SID了,就是在上一个阶段创建用户那里。你会发现每个用户的SID组成方式都是:

S-1-5-21- {一坨数字} - {又一坨数字} - {再一坨数字} - 尾号(RID)

仔细观察,同一个系统里,前面的“S-1-5-21- {一坨数字} - {又一坨数字} - {再一坨数字}”都是一样的,区别在于后面的尾号,这个尾号就叫做RID,它用于区分一个机器下不同的用户。前面的这个“{一坨数字} - {又一坨数字} - {再一坨数字}”是用来区分不同的机器的。当你在安装 Windows 进行到 Sysprep 阶段时,Windows 会根据当前的系统时间、开机时间、CPU占用等状态,随机创建一个SID出来,并且作为自己这个系统的SID。这样保证了当你有多个 Windows 的时候,它们的权限信息不会错乱。

而我们现在要做的,就是把现在64位系统的SID改成原来32位系统的SID。找到之前导出的TXT并打开,来到SID这一列,随便看一个用户,把RID前面的那串内容复制下来,然后放到这里。例如某个用户的SID是 “S-1-5-21- {一坨数字} - {又一坨数字} - {再一坨数字} - RID”,只要复制前面的“S-1-5-21- {一坨数字} - {又一坨数字} - {再一坨数字}”,然后粘贴到这个参数就可以了。以下是一个示例:

/SID=S-1-5-21-1275210071-1292428093-839522115

(这是我的SID示例,你别跟着抄啊)

/F:确认操作。这个就是让它痛痛快快地修改SID。不带上这个参数的话,程序就会问你“啊,你真的确定要修改SID吗?修改SID会怎么怎么样的”。

另外,SIDCHG 这个工具还包含了很多命令行参数,可以 SIDCHG /? 自己研究。

总结一下,我在这里的命令行参数是:

SIDCHG /OS=C:\Windows /SID=S-1-5-21-1275210071-1292428093-839522115 /F

(这同样只是我的示例,你别跟着抄啊)

STEP 3 按下回车,SIDCHG 会询问你产品密钥,用我的这个版本直接回车即可。

STEP 4 然后 SIDCHG 将开始修改 SID,这个时候什么都不用动,直到看到 SID changed to ... 的提示,就说明修改成功了。直接关掉cmd即可。

STEP 5 (妥协用户法做) 回到文件资源管理器,找到你之前创建的 $WinOld 文件夹,进入 Users(用户)文件夹,把里面的所有用户文件夹改个名字,改个人用户就可以了,公共用户或其它一些杂七杂八的不用动,注意一下如果你使用了内建 Administrator 或 Guests 用户,也是要改下名字的。简单改一下就行,比如我在前面都加了一个 $,确保你改完还能认出来就行。

STEP 6 回到 $WinOld 文件夹,把里面的所有文件(夹)全部移动回根目录(注意一定是移动)。遇到 Windows “确定要移动系统文件?”等贴心提示请直接全部选谢谢,重名文件请跳过这些文件不然系统就被替换回去了,等待移动完成。

STEP 7 如果你还觉得缺点什么,并且如果你做了迁移第一阶段 - STEP 3 这个步骤,请打开 $DismWIN 文件夹,打开到 Windows\System32\,将里面的所有文件(夹)复制到根目录下的 Windows\SysWOW64\ 里。一定是复制不然你弄这个文件夹等于没弄。

STEP 8 现在文件就操作完成了,接下来挂载注册表。你可以自己手动挂载注册表,使用刚才剩下的那个 $WinOld 就可以了,本教程不介绍如何手动挂载;也可以像我这样用前言 - 需要准备的内容中提到的 Dism++ 一键挂载注册表:

注意!要使用 Dism++ 挂载注册表,你必须已经做了 迁移第一阶段 - STEP 3 这个步骤。

8.1 打开 Dism++,接受许可协议(如果有),在软件主界面上面选中你的64位 Windows Vista/7 系统,点击下面的“打开会话”。

8.2 打开会话后,找到左侧“常用工具”下的“工具箱”,在右边的页面里找到“账户管理”,把它点开一下关掉就行,确保 SAM 注册表被挂载。

8.3 然后再点击上面的“文件”菜单,找到“添加路径”并点击。

8.4 会出来一个打开对话框,找到并选中之前的 $DismWIN,下面“选择文件夹”即可。

8.5 如果一切顺利,Dism++ 应该会识别出来这个32位系统。按照和上面一样的方法打开“账户管理”然后关掉。

8.6 注册表就挂载好了,Dism++ 可以最小化放后台挂着了,用不到它,不要关掉就行。

STEP 9 准备好在前言 - 需要准备的内容中提到的 Registry Workshop,打开它,终于要开始折腾注册表了。

STEP 10 打开 HKEY_LOCAL_MACHINE 项(以下简称 HKLM),你会看到一堆前面带着ID+路径的项,这些就是 Dism++ 为我们挂载的注册表项,带 $DismWIN 的就是32位系统的注册表项,不带就是64位的。

STEP 11 将32位的 ntuser.dat | DEFAULT | schema.dat 这几个项里面的所有项和值全部复制到64位。具体操作为:点开一个32位的项,在右边按下 Ctrl+A 全选,Ctrl+C 复制,然后在右边找到64位对应的项,Ctrl+V 粘贴。遇到“此项已经存在”的提示,请全部选是

ntuser.dat 的示例

如果遇到“无法修改值”的提示,不用管它,点击“是”继续修改。下文出现此对话框都是如此操作。

STEP 12 现在来迁移恼人的用户相关注册表。我的建议是再新建一个本地注册表窗口,一个看32一个看64。以下是详细的迁移步骤:

12.1 两边都定位到 SAM\Domains\Account,把32位的 Aliases 项复制到64位的相同位置。

12.2 两边都定位到 SAM\Domains\Account\Users,你会看到这里有一些名字为十六进制数的项和一个叫 Names 的项,这些十六进制数其实是和之前提到的SID尾号(FID)是绑定的,比如Hex的1F4就是Dec的500,正好对应 Administrator 用户。如果你在迁移第二阶段 - STEP 4 时是严格按照顺序来的话,这里这些项应该是能完全对的上的。打开这些项,将里面除“V”以外所有的值,全部复制到64位对应的位置。一定不要(直接)复制“V”这个值,会让用户炸掉!

我这里1004那个用户忘删了233,你一定要在刚才的步骤里删掉,一定

12.3 然后回到 Account 项,把32位的 V 值复制到这个地方,注意是 V 值,和上面正好相反,F 值不能不能复制,会让所有用户炸掉。

12.4 操作完成之后,两边都来到 SAM\Domains\Builtin,注意先把64位 Builtin 下面的 Members 项整个删掉,然后再把把32位的 Aliases 项复制到64位的相同位置。

12.5 完成之后 SAM 注册表项就弄好了,两边都来到 SECURITY 注册表项,打开 Policy 项,将32位的 Accounts 项复制到64位对应位置。

12.6 用户相关注册项就弄好了,回到主线……

STEP 13 接下来折腾 SOFTWARE 和 SYSTEM 注册表项。我们不在这里迁移,而是把它们导出成注册表文件,修改完之后到系统里导入。对着一个项右边,点击“导出”,把它放到一个位置,比如我放在了 C:\from_old_computer\Reg,文件名只要你能知道就行。

点击导出,选择一个位置保存

STEP 14 两个都导出完成之后,点击上面的打开图标或者 Ctrl+O,找到刚才导出的那两个注册表项,再把它们打开。

两个都要修改,直接一起打开谢谢

STEP 15 先来修改 SOFTWARE 注册表项。详细步骤:

15.1 打开 HKLM,你会看到当时这个32位注册表项被挂载的名字,请把它的名字改成 SOFTWARE。

15.2 打开 SOFTWARE 项,将除以下项以外的项移动到 WOW6432Node 项里面:

Clients | Microsoft | Policies | RegisteredApplications | WOW6432Node

先全选,再用 Ctrl+鼠标左键去掉上面那些项,然后直接鼠标托到 WOW6432Node 里面

如果你是使用的剪切,软件会询问“确认删除?”,还挺哈人的。软件的意思其实是这个地方(SOFTWARE下)的这些项将会被删除,直接“是”就可以,这些注册项已经在剪贴板里了。下文遇到此情况同样是这样处理。

点击“是”谢谢

15.3 别急,进入 WOW6432Node 项,把里面的 Classes 项再复制到外面(SOFTWARE)。(这步忘截图惹,不好意思)

15.4 完成后,来到 SOFTWARE\Microsoft\Windows\CurrentVersion\,把里面的 Uninstall 这个项移动到 WOW6432Node 同名路径下 (SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\)。这个项 WOW6432Node 里默认不存在,需要你自己创建。

15.5 (Windows 7 做) 同样是在 SOFTWARE\Microsoft\Windows\CurrentVersion\,把里面有一个 SideBySide 项,全部删掉。

15.6 (妥协用户法做) 转到 SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\,看到里面那几个熟悉的 S-1-5-21 开头的 SID 了没?删掉它们。

15.7 SOFTWARE 注册表项就改完了,Ctrl+S 保存。

STEP 16 接着修改 SYSTEM 注册表:

16.1 同样把 SYSTEM 注册表项的名字改了,改成 SYSTEM。

16.2 进入 SYSTEM 注册表项,把里面除了 ControlSet00? 的项全部删除。

16.3 注意要看一下64位的 ControlSet00? 能不能跟32位的对上。某些64位系统这里是 ControlSet001 和 002,而32位这边是001和003,或者反过来,这个时候你就要把现在正在操作的32位注册表改成和64位一样的才行。

我这边64位是003,那就要把32位的002重命名为003

16.4 展开这两个 ControlSet,把里面除 Services 以外的项全部删掉,两个都要删。

16.5 进入其中一个的 Services,把里面的 Eventlog 项删掉,同样两个 ControlSet 都要删。

16.6 没了,可以保存了。

STEP 17 虽然可以保存 SYSTEM 注册表了,但 SYSTEM 注册表并没有修改完成。正如我在前言 - 需要准备的内容提到的,如果你的 SCSI 主控以及硬件已经发生变化,那么你就需要彻底清理 SYSTEM 注册表中的驱动。下面介绍我这个工具具体如何使用:

(此工具没有 Unicode 组件,在非中文语言系统运行会乱码)

17.1 打开工具,点击“需要进行清除的注册表项”旁边的“浏览”,找到刚刚保存的 SYSTEM 注册表项(或直接填入注册表路径),双击打开。

17.2 打开注册表项后,下面的保存路径会自动放到选定注册表项的同目录。如果需要修改请自行修改,确定无误后点击“执行”。

17.3 然后程序会开始处理,标题会显示处理进度。我几次测试都是总共 2000~3000 个,如果你的总个数已经上万了,请检查你是不是选成 SOFTWARE 注册表项了(

这个处理一般很快的,顶多10秒

17.4 处理完成,直接确定,关闭程序即可。你应该能看到被清除SYS的注册表已经保存。

17.5 有关我的程序和这个被清理SYS注册表的几个注意点:

  • 程序保存的注册表是使用 UTF-8 编码的,而 RegEdit、RegWorkshop 等工具生成的注册表项是 UTF-16 LE 编码的,再加上注册表中的SYS被清理,生成的注册表项大小应该远小于原注册表项;
  • 虽然程序保存的注册表是使用 UTF-8 编码,但 RegEdit、RegWorkshop 等工具都是可以正常识别并导入的。
  • 此程序只能输入 UTF-16 编码的注册表项文件,所以它自己导出的 UTF-8 编码的注册表项是不能再套娃被它再清除一遍的。(你都清过了为啥还要再清一遍)

STEP 18 终于把这个漫长的第三阶段弄完了。关闭所有程序,包括那个还挂在后台的 Dism++,是不是已经被你忘掉了?一定要把它关掉,确保注册表被卸载(细心的人会在关闭 Dism++ 之后再打开 RegEdit 检查一遍有没有卸载)。关掉之后就可以重启到64位系统了。

迁移第四阶段

STEP 1 重启,回到了熟悉的OOBE,但是先别急,同样是按 Shift+F10 打开 命令提示符,输入 lusrmgr.msc 打开 本地用户和组,因为在我的测试中,有些 Windows 的用户管理在经过SAM修改后会出现问题,导致新创建的用户不正常,有时候是你 lusrmgr.msc 自己建的用户不正常,有时候又是OOBE建的用户不正常。直接按照迁移第二阶段 - STEP 4创建一个用户就好,用户名可以随便填。注意下面那四个框像我图片里这样设置:

我这里新建的用户叫 Test

新建用户后,别忘了给它加入管理员组。双击刚才新建的用户,转到“隶属于”选项卡,点击下面的“添加”,输入 Administrators,确定再确定。

你可能会问我:我的用户不都迁移过来了吗?为什么还要再折腾一个新用户?这是因为我们要用自己建的这个用户搞事情,特别如果你的方法选择的是妥协用户法,你迁移过来的那些用户并没有完全迁移完成,需要另外一个账户帮助你操作。

STEP 2 完成创建之后就可以关闭所有窗口,终于可以开始过OOBE了。用户名同样随便填一个,这个也可能成为我们待会用来操作的账户。

我就叫 John 了

STEP 3 下一步,OOBE会让你设置计算机名,请务必将计算机名设置成和之前32位一模一样的。

STEP 4 至于其它的OOBE设置,你如果想改的话可以改,不知道要不要改的话就请尽量和之前32位系统的设置保持一致。

STEP 5 过完OOBE之后,等待,直到你看到用户开大会。

Test 是 lusrmgr.msc 创建的账户,John 是OOBE创建的账户,反正都是刚才新创建的用户

STEP 6 (妥协用户法做) 你现在有一件很重要的事要做:那就是登录每一个你迁移过来的用户。比如我这里应该把 Hana、Taotao、Usera 全部登录一遍。按道理来说,每个账户都还没有配置文件,这些账户都应该是新账户。进入桌面直接注销即可,重复这样做直到把所有迁移过来的用户全部登录一遍。

STEP 7 (回到)登录界面,进入任意一个刚才在OOBE新创建的用户,比如 John。我这里进入这个用户之后,发现它创建的时候出现了问题,没有管理员权限,甚至连其它管理员都找不到,那这个用户就废了,后面的迁移用另一个用户。

STEP 8 进入刚才创建的 Test 用户,如果你没设置密码,你会发现登录时需要密码,这似乎是 Vista 的一个bug,其实这个用户没密码,直接回车就能登录。

STEP 9 登录这个用户,你有以下事情需要做:

9.1 请在这一步安装驱动程序。如果你在32位系统中开启了 Aero,请你务必安装显卡驱动,否则你的 Aero 设置将丢失。同时如果你的32位系统之前装过运行库或补丁的话,请拿出之前让你准备好的运行库和补丁包,在这个阶段安装并应用。这个阶段允许你重启几次电脑。

如果你在使用 VMware 但此时系统无法安装 VMware Tools,你可以尝试下我的驱动:https://ctrlmmc.lanzouw.com/b00zxnanja,密码:bu1o

如果安装显卡驱动后,你的屏幕分辨率并没有自动变为之前32位系统的分辨率,请手动设置回去,否则迁移用户的桌面图标布局将丢失

9.2 (妥协用户法做) 进入 Users(用户) 文件夹,将你刚才登录创建的那一堆用户文件夹全部删掉,把你原来用32位 $WinOld 移动过来的用户文件夹的名字改回来;

把刚才创建的 Hana 用户文件夹删掉,然后把名字被改成 $Hana 的用户文件夹重新改回 Hana

9.3 Win+R 打开运行,regedit 打开注册表。定位到 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\,你会看到这里面的值大多都是在定义应用程序的位置。现在你需要把这里所有值中数据里的“(x86)”删掉。说人话就是让32位程序路径也指向64位的 "C:\Program Files"。改完之后定位到 WOW6432Node 同目录(HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\),同样把里面所有的“(x86)”删掉。

其实这里正确的说法是把这些软件位置都改成和之前32位一样的,不分32、64软件。

你可能会疑惑:那我不想把32位应用程序和64位放一起怎么办?不用担心,妥协软件法会把它们改回去回去的

9.4 (硬核软件法做) 注册表编辑器别动关,定位到 HKLM\SOFTWARE,将里面的 Classes 项导出到一个地方,推荐是跟之前那几个 SOFTWARE.reg 和 SYSTEM.reg。

9.5 (硬核软件法做) 然后点击菜单 文件>导入,找到你之前在PE另存为的 SOFTWARE.reg,在这里导入它。

如果导入完成后的提示是“部分数据未成功写入注册表。系统或其他进程正在打开某些项。”就对了。可以关掉注册表编辑器了。

提示这个就说明导入成功了

9.6 (妥协软件法做) 你同样要导入那两个注册表,但是你要用 SYSTEM 权限导入。你可以用前言中提到的 NSudo 工具打开 RegEdit(SYSTEM权限获取方法不再过多赘述),然后导入 SOFTWARE.reg 和 SYSTEM_sys.reg。

导入完成后提示的同样应该是“部分数据未成功写入注册表。系统或其他进程正在打开某些项。”

9.7 (随便) 打开 控制面板>用户帐户>管理其他帐户,把那个OOBE创建的寄掉的帐户嘎了,个人文件直接嘎掉谢谢。

STEP 10 请重启电脑。如果你选择的方法是硬核软件法,那恭喜你,你已经完成迁移了。重启后回到任意一个管理员用户,创建的那个 Test 用户就可以删掉了,系统盘里的 $WinOld 和 $DismWIN 文件夹也可以删掉了。

如果你选择的是妥协软件法,你只需要再做下面两个步骤:

STEP 11 (妥协用户法) 把你迁移过来的用户再次重新登录一遍,就像 STEP 6 一样。这次登录的时候你应该会发现用户已经完全迁移过来了,包括设置和桌面背景之类的,但是你不需要做什么,登录之后直接注销即可。

STEP 12 下一步你需要:

插入 Windows Vista/7 64位 安装光盘。

没错!重新升级一遍系统。你可能会问,为什么要再折腾升级一遍?因为我们手动将之前32位的程序迁移到64位的 Program Files (x86) 会非常非常麻烦,不仅要注意复制的位置,还要自己手动改注册表,要改SOFTWARE注册表,要改SYSTEM注册表,还要改每个用户的注册表,非常麻烦。而之前我们把32位软件的安装位置改成了原来的位置,Windows 升级程序是不认可的,它会自动把 Program Files 中的程序移动到 Program Files (x86),并且自动修改所有注册表,替我们节省了不少步骤。

选择对应的 Windows 版本后,看到这个亮起的“升级”按钮了吗?点它!

当然你也可以理解为,本来在32位系统不能用的这个升级按钮,经过我们的一番折腾,它终于亮起来了。

“您的升级可能需要几小时完成”。等它升级,进入下一阶段。

最终章 - 迁移第五阶段

STEP 1 等待升级完成,直到OOBE。过OOBE的时候和之前一样,有想要设置的可以重新设置,没有想要设置的或者你不知道怎么设置,请保持和之前32位系统的设置一样。

STEP 2 过完OOBE之后进入登录界面,Test 用户的名字变成了 win-updt\Test,无所谓。

STEP 3 (建议在 Test 用户操作) 如果你是从早期版本的 Windows 一路升级过来的,请到 Program Files (x86) 文件夹,里面应该会有一个 Plus! 文件夹,把它复制到 Program Files 文件夹。

STEP 4 恭喜你!迁移步骤已全部完成!直接进入你迁移过来的任意帐户开始 Enjoy it。可以从控制面板里把那个临时操作用的 Test 用户删掉了,系统盘根目录的 $WinOld 和 $DismWIN 文件夹也可以全部删掉了。

Vista 使用轻松传送恢复

之前说过,按照我这个步骤,一般情况下是不会有内容迁移不过来的。但是以防万一呢?比如用户凭据。以下是 Vista 使用轻松传送恢复数据的教程:

STEP 1 找到你之前用轻松传送保存的备份文件,直接双击打开它。

STEP 2 会要求你输入密码,然后点击下一步。

STEP 3 选择需要迁移到哪些用户,一般默认就可以。

STEP 4 直接点击传送。

STEP 5 传送开始,坐和放宽。

STEP 6 传送完成,点击关闭。它如果要你重启你就重启。

Windows 7 使用轻松传送

STEP 1 找到你之前用轻松传送保存的备份文件,直接双击打开它。

STEP 2 输入密码。

STEP 3 选择要传送的内容,如果你是按照前面教程做的,直接传送即可。

STEP 4 开始传送,坐和放宽。中间 Explorer 可能会自己关掉,然后自己再打开。

STEP 5 传送完成。如果你不想查看报告,直接关闭即可。然后它可能会让你重启,那你就重启。

STEP 6 重点来了!重启登录用户之后,系统可能会提示你输入密码以恢复凭据,输入你之前32位的用户密码即可恢复凭据。

升级完成的64位系统

(UP把win7虚拟机搞丢惹,下面就用 Vista 演示了 233)

这是真的64位系统

桌面完美迁移

设置、服务、凭据、软件,无一未迁移。

网易云和打开方式也是迁移了好吧

由于是从 x86 迁移到 Wow64,所有的右键菜单都只能迁移到32位程序,要解决这个问题请重装软件。

Hana 用户完美迁移好吧

Usera 这种复古风用户也是完美迁移了过来,就是家长控制似乎出了些问题,到时间不会锁定用户,这个需要重新设置一下。


后话

细想,微软当年为什么不给出32位系统升级64位的方案呢?

当你现在在网上翻各种论坛,去寻找 Windows Vista 的安装镜像,你会发现即使是当年的电脑发烧友们,也是下载的 Vista 32位版本。当时普通用户的电脑大多还在用着x86架构,而x64一般是给服务器、工作站使用的。

想象一下,在 Windows Vista 刚刚发售的时候,那个时候普通人的电脑往往都还是运行着 Windows XP 的x86电脑。现在,你是一个硬件发烧友,你买了一台x64架构的计算机,你会给它安装32位的操作系统吗?

当时的人们是会的。因为当时的x64架构对硬件和驱动的支持不足,软件的生态也并不成熟。你可能听说说 XP 64位,但你可能没听说过它的兼容性问题被用户诟病,远不如32位 XP 稳定。

我家里就有一台 ThinkCentre M57,预装的是32位的 Windows Vista Business,即使它的处理器是 Core2Duo。

2008年,英特尔 i 系列处理器上市,原生支持x86_64架构,此时的x64架构已经成熟,而2009年的 Windows 7 的紧跟上市,提供了完善的 Wow64 子系统和优化的资源占用。进化的硬件和优化的系统直接引发了一场换机潮流,用户纷纷从过去的32位PC换到安装着 Windows 7 的 x64 PC,而很少有人考虑把以前的电脑升级到新系统。

答案显而易见了。32位和64位之间存在大量的架构差异,数据迁移也存在着复杂性(看我这个复杂的教程你也应该能看出来了)。而跨架构升级可能导致数据丢失、系统无法启动等严重问题,而微软需承担用户因官方方案失败引发的责任。所以微软推荐用户通过“备份→全新安装→恢复数据”的方式迁移,既能保证系统稳定性,又能避免技术支持压力。

毕竟我也不能保证我这个方案会有什么暗病。

不管怎样,这场换机潮流都对PC市场乃至计算机未来发展带来了深远影响。酷睿 i 与 Windows 7 的组合使 64 位系统成为主流,突破 4GB 内存限制,为虚拟机、视频渲染等专业应用铺平道路。这次的换机潮也不仅是一次技术升级,更是 PC 产业从 “功能驱动” 向 “体验驱动” 转型的里程碑。

那么感谢您能看到这里。如果你在操作的过程中,发现有不太对的地方,也欢迎在评论中提出。

Bilibili 控制台MMC 设计、编写

写完这篇文章的我只有一个想法:

我™再也不想搞迁移啦!QAQ

阅读剩余
THE END
本站已平安运行
00000000