Существует ли надежный способ определить историю обновлений ОС до Windows 10 или была ли это новая установка?
решение1
На Ten Forums есть отличное руководство по отдельной теме:
Как переместить папку профиля пользователя в другое место в Windows 10
В этом руководстве автор говорит следующее:
Нам нужно отредактировать реестр Windows, чтобы "обмануть" Windows, заставив ее думать, что это чистая установка, а не обновление. Для этого откройтеРедактор реестра(WIN + R, введите regedit, нажмите Enter), перейдите к ключуHKEY_LOCAL_MACHINE\SYSTEM\Настройка
Удалить обаДВОЙНОЕ СЛОВООбновление (правая панель) иКЛЮЧОбновление (левая панель), см. снимок экрана.
На последующем снимке экрана автора отображаются соответствующие записи в реестре:
Следующая область реестра, по-видимому, является ключом к определению того, была ли установка Windows 10 обновлением:
HKEY_LOCAL_MACHINE\SYSTEM\Настройка
Чтобы доказать эту теорию, я сначала инициировал чистую установку Windows 10 на моей тестовой машине и тщательно изучил ту же область реестра. Ключ, Upgrade
очевидно, отсутствует:
Затем я использовал другой компьютер для чистой установки Windows 7, а затем выполнил обновление до Windows 10 на месте. Посмотрев на ту же область реестра, я увидел следующее:
Обратите внимание, что Upgrade
ключ присутствует, вместе с соответствующим Source OS
ключом. Если мы внимательно посмотрим на Source OS
ключ, то увидим следующее:
Вы можете ясно видетьWindows 7 Корпоративнаяуказан как значение для , ProductName
связанное с Source OS
ключом.
Обратная связь от сообщества привела к дополнительному исследованию. Взглянув на другую машину, которая изначально была настроена с чистой установкой базовой версии RTM Windows 10 (версия 1507), мы видим следующее:
Хотя ОС этого компьютера была настроена через чистую установку, Upgrade
ключ все еще присутствует. Однако, когда мы изучаем каждый Source OS
ключ, мы видим, что даты для каждого обновления соответствуют примерно тем же временным рамкам, что и первые два основных выпуска обновлений функций Windows 10: версии 1511 и 1607. Кроме того, значение для 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/Software/Microsoft/Windows/CurrentVersion/Setup/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
}