是否有可靠的方法来确定升级到 Windows 10 的操作系统历史记录或是否是全新安装?
答案1
Ten Forums 上有一个关于单独主题的优秀教程:
如何在 Windows 10 中将用户配置文件文件夹移动到另一个位置
在该教程中,作者说道:
我们需要编辑 Windows 注册表来“欺骗” Windows,使其认为这是一个全新安装,而不是升级。为此,请打开注册表编辑器(WIN + R,输入 regedit,按 Enter),浏览到键HKEY_LOCAL_MACHINE\SYSTEM\Setup
删除双字升级(右窗格)和钥匙升级(左窗格),见屏幕截图。
作者随后的屏幕截图显示了注册表中的相应条目:
注册表中的以下区域似乎是确定 Windows 10 安装是否为升级的关键:
HKEY_LOCAL_MACHINE\SYSTEM\Setup
为了证明这一理论,我首先在测试机上全新安装 Windows 10,并仔细检查注册表的同一区域。密钥Upgrade
明显缺失:
接下来,我使用另一台机器全新安装 Windows 7,然后就地升级到 Windows 10。查看注册表的同一区域,我看到以下内容:
请注意,Upgrade
密钥是存在的,并且还有一个相关Source OS
密钥。如果我们仔细查看Source OS
密钥,我们会看到以下内容:
您可以清楚地看到Windows 7 企业版ProductName
列为与键相关的值Source OS
。
社区反馈促成了进一步的研究。查看另一台最初安装 Windows 10 RTM 基线(版本 1507)的机器,我们看到以下情况:
虽然这台计算机的操作系统是通过全新安装配置的,但Upgrade
密钥仍然存在。但是,当我们检查每个密钥时,我们可以看到每个更新的日期与前两个主要 Windows 10 功能更新版本(版本 1511 和 1607)大致相同。此外,显示Source OS
的值ProductName
Windows 10 专业版,即使是最老的Source OS
钥匙也是如此。较新的Source OS
钥匙有一条额外的线索:
最新更新ReleaseId
显示1511,表示更新之前正在使用的 Windows 10 的精确版本。
根据我们所看到的情况,我们可以得出以下结论:
- 注册表
HKLM\SYSTEM\Setup
项使我们能够确定 Windows 10 最初是全新安装还是升级安装。 - 如果
Upgrade
密钥丢失,则肯定是全新安装。 - 如果
Upgrade
密钥存在,它可能是由传统的 Windows 升级(从 Windows 7 或 Windows 8.x)生成的,也可能是在 Windows 10 主要功能更新(例如版本 1511 和 1607)期间创建的。 - 如果
Upgrade
钥匙在那里,您需要检查Source OS
钥匙。 - 最旧的
Source OS
密钥将显示相应值内的原始操作系统ProductName
:如果它是 Windows 7 或 Windows 8 的版本,则它是升级版。如果它是 Windows 10 的变体,则它是全新安装。
答案2
正如 Magicandre1981 在评论中所说:
查找以下值 MediaBootInstall
HKEY_LOCAL_MACHINE/软件/微软/Windows/CurrentVersion/设置/OOBE/。
如果 MediaBootInstall = 1,则 WIndows 通过 ISO/DVD 安装。
如果 MediaBootInstall = 0,则 Windows 是升级版
答案3
$Products = Get-ItemProperty -Name ProductName -Path "HKLM:\SYSTEM\SETUP\Source OS*" | select Productname -Unique
if ($Products -like '*7*')
{
WRITE-HOST Upgraded
}
ELSE
{
Write-Host Fresh Install
}