web-dev-qa-db-fra.com

Un moyen fiable pour obtenir la version Windows du registre

Je vérifie la version de Windows dans un programme d'installation (réalisé avec NSIS) en vérifiant la clé de registre suivante:

HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion"

Selon cet article et cette page de MSDN, le numéro de version actuelle pour Windows 10 devrait être 10,0.

Je viens d'installer Windows 10 Pro Insider Preview et le numéro de version indiqué dans le registre est toujours 6.3, au lieu de 10.10 comme il se doit.

Existe-t-il un autre moyen fiable dans le registre pour détecter Windows 10?

10
skuallpa

Au lieu de lire la valeur CurrentVersion, lisez les nouvelles valeurs CurrentMajorVersionNumber (qui est 10) et CurrentMinorVersionNumber (qui est 0) sous Windows 10. Ces 2 clés sont nouveaux dans Windows 10 pour détecter la version Windows du registre .

14
magicandre1981

Il y a aussi une chaîne lisible par l'homme dans le registre appelée "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();
}
2
pav

Essayer

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId

Ce qui me donne 10 et 1709.

2
Temujin

Voir l'article de Peter Bright sur https://arstechnica.com/information-technology/2014/11/why-windows-10-isnt-version-6-any-more-and-why-it-will-probably -work / pour plus d'informations sur les raisons pour lesquelles vous voyez les réponses que vous faites. Comme vous l'avez déjà vu dans @ magicandre1981, la touche CurrentMajorVersionNumber vous donnera le "10" que vous voulez. Vous pouvez obtenir 10,0 auprès de System.Environment.OSVersion si le manifeste de l'application explicitement désigne votre application pour Windows 10, comme indiqué dans l'article référencé. Sans ça, Environment.OSVersion vous donnera 6.2.9200, qui est le même que Windows 8. Ainsi, votre version de Windows 10 est 10.0, 6.3 ou 6.2, selon la façon dont vous posez la question.

1
John Whitmire