我使用C#。我尝试获取当前版本的操作系统:
OperatingSystem os = Environment.OSVersion;
Version ver = os.Version;
我上了 Windows 10 : 6.2 。
但 6.2 是 Windows 8 或 WindowsServer 2012 (Detect Windows version in .net)
我找到了以下解决方案(How can I detect if my app is running on Windows 10)。
static bool IsWindows10()
{
var reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
string productName = (string)reg.GetValue("ProductName");
return productName.StartsWith("Windows 10");
}
这是在C#中获取当前版本的最佳方式?
答案 0 :(得分:6)
将application manifest添加到您的应用中,并将supportedOS Id Windows 8.1和Windows 10添加到清单中:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
</application>
</compatibility>
现在Environment.OSVersion
包含适用于Windows 8.1和Windows 10而非6.2的正确数据,表示您运行的是Windows 8.这是change since Windows 8.1。
答案 1 :(得分:0)
以下是Microsoft官方链接,指示how to get the System Version。它实际上是对Version API Helper Functions
的调用所以基本上你必须将这段代码转换成C#,因为它是用C ++编写的,然后只保留Windows 10部分......
#include <windows.h>
#include <stdio.h>
#include <VersionHelpers.h>
int
__cdecl
wmain(
__in int argc,
__in_ecount(argc) PCWSTR argv[]
)
{
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
if (IsWindows10OrGreater())
{
printf("Windows10OrGreater\n");
}
}
如果您想尝试阅读代码,可以查看this one link。此DLL可用于获取有关操作系统的信息......