就像im在“控制台游戏引擎”上工作一样,但是它只能在Windows 10上使用,因为“自定义颜色”没有正确显示在其他版本上,例如win8,相反,它们只是一堆unicode代码?”
”
所以我想检查Windows版本是否为10。
var workingSysVer = Environment.OSVersion.Version.ToString().Substring(0, 2);
if (workingSysVer != "10")
{
Console.Title = "OS Version Warning";
// other code
}
有没有更好的方法来检查Windows版本?
您可以使用其中的所需内容(除了OSVersion
可以使用osName
和之外osRelease
):
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.Versioning;
using Microsoft.Win32;
string NL = Environment.NewLine;
string HKLMWinNTCurrent = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion";
string osName = get(() => Registry.GetValue(HKLMWinNTCurrent, "productName", "").ToString());
string osRelease = get(() => Registry.GetValue(HKLMWinNTCurrent, "ReleaseId", "").ToString());
if ( !osRelease.IsNullOrEmpty() ) osRelease = $" ({ osRelease})";
string osVersion = Environment.OSVersion.Version.ToString();
string osType = Environment.Is64BitOperatingSystem ? "64-bits" : "32-bits";
string clr = Environment.Version.ToString();
string dotnet = get(() =>
{
var attributes = Assembly.GetExecutingAssembly().CustomAttributes;
var result = attributes.FirstOrDefault(a => a.AttributeType == typeof(TargetFrameworkAttribute));
return result == null
? ".NET Framework (unknown)"
: result.NamedArguments[0].TypedValue.Value.ToString();
});
string Platform = $"{osName} {osType} {osVersion}{osRelease}{NL}{dotnet}{NL}CLR {clr}";
string get(Func<string> func)
{
try { return func(); }
catch { return "(undefined)"; }
}
例
Windows 10 Pro 64-bits 6.2.9200.0 (2009)
.NET Framework 4.7.2
CLR 4.0.30319.42000
我从没注意到6.2.9200是不正确的...!?
来自@nap的解决方案:如何获取Windows版本-如“ Windows 10,版本1607”?
@DanielDiPaolo的解释:在.net中检测Windows版本
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句