如何检测Windows的哪个版本正在运行?

我有一个作为Word加载项运行的应用程序。 (VSTO)。

它运行在世界各地的许多PC上。 在某些情况下,我需要麻烦地解决问题(显然是远程),并有一个报告机制,告诉我哪个Windows操作系统正在运行 – 我在.NET中使用Environment.OSVersion 。 至less在Windows 10之前。

有一篇关于创build应用程序清单的MSDN( 针对Windows的应用程序)的文章,它将使正确的版本能够被返回。

但我的应用程序是一个DLL,而不是一个EXE,所以不能真正适应这篇文章中提到的XML代码。

有没有办法只是问Windows,“你是什么版本?真的,如果你承认真正的版本,我不会哭。

或者在registry中的某个项目?

WMI是做这种东西的最好方法你可以用它来检索OS信息:

 ManagementObjectSearcher objMOS = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem"); OS.Name = ((string)objMOS["Caption"]).Trim(); OS.Version = (string)objMOS["Version"]; OS.MaxProcessCount = (uint)objMOS["MaxNumberOfProcesses"]; OS.MaxProcessRAM = (ulong)objMOS["MaxProcessMemorySize"]; OS.Architecture = (string)objMOS["OSArchitecture"]; OS.SerialNumber = (string)objMOS["SerialNumber"]; OS.Build = ((string)objMOS["BuildNumber"]).ToUint(); 

这可以获取您的操作系统细节。

您可以尝试GetVersionEx Win32 API。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx

请注意,Windows 10实际上是版本6.4。 6.0版本是Vista,6.1 – 7,6.2 – 8。