ProductName在Windows注册表中,它针对不同的语言进行了本地化

本文关键字:语言 本地化 注册表 Windows ProductName | 更新日期: 2023-09-27 18:04:47

我试图在我的c#应用程序中检测Windows 7, Windows 8/Windows 8.1和Windows 10之间的差异。我试图通过使用

来确定这一点
 HKLM'Software'Microsoft'WindowsNT'CurrentVersion'ProductName

,因为我可以可靠地检查该值是否包含"Windows 7","Windows 8"或"Windows 10"。

我的问题:是ProductName注册表值本地化时,Windows使用不同的语言包?这会可靠地以英语返回上述值吗?还是会根据操作系统语言而改变?

在我因为没有使用大家都喜欢推荐的其他确定操作系统的方法而受到批评之前…使用OSVersion已经过时了,因为它并不总是返回正确的值。此外,GetVersion和GetVersionEx也不是一个选项,因为它们在Windows 8.1之后不推荐使用,它们会错误地将Windows 10识别为Windows 8。被推荐用来替代这些方法的Version Helper函数在c#中不可用。如果有人知道另一种可靠的方法来确定这些操作系统之间的差异,请告诉我。

ProductName在Windows注册表中,它针对不同的语言进行了本地化

Windows 10企业版:

HKLM'SOFTWARE'Microsoft'Windows NT'CurrentVersion'ProductName = Windows 10 Enterprise