Надежный способ получить версию Windows из реестра
Я проверяю версию windows в установщике (сделанном с NSIS), проверяя следующий раздел реестра:
HKLM "SOFTWAREMicrosoftWindows NTCurrentVersion" "CurrentVersion"
по данным этот пост и на этой странице из MSDN номер currentVersion для Windows 10 должен быть 10.0.
Я только что установил предварительный просмотр Windows 10 Pro Insider и номер версии, указанный в реестре, по-прежнему 6.3, а не 10.10, как следует.
есть ли другой надежный способ реестра для обнаружения Windows 10?
4 ответов
вместо чтения значения CurrentVersion
читайте новые значения CurrentMajorVersionNumber
(который 10) и CurrentMinorVersionNumber
(что равно 0) под Windows 10. Те 2 клавиши в Windows 10 для обнаружения версии Windows, из реестра.
в реестре также есть читаемая человеком строка под названием "ProductName"
using Microsoft.Win32;
private string getOSInfo()
{
string registry_key = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion";
var key = Registry.LocalMachine.OpenSubKey(registry_key);
var value = key.GetValue("ProductName");
return value.ToString();
}
попробовать
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId
что дает мне 10 и 1709.
см. статью Питера Брайта на https://arstechnica.com/information-technology/2014/11/why-windows-10-isnt-version-6-any-more-and-why-it-will-probably-work/ для более глубокого понимания того, почему вы видите ответы, которые вы делаете. Как вы уже видели из @magicandre1981,CurrentMajorVersionNumber
ключ даст вам "10", который вы хотите. Вы можете получить 10.0 из System.Environment.OSVersion
если манифест приложения явно обозначает приложение для Windows 10, как указано в указанной статье. Без него,Environment.OSVersion
даст вам 6.2.9200, который совпадает с Windows 8. Так, ОС Windows 10 версия 10.0, 6.3 или 6.2, в зависимости от того, как вы зададите вопрос.