using System;
using System.Runtime.InteropServices; namespace GetWindowsVersion
{
[ StructLayout( LayoutKind.Sequential )]
public class OSVersionInfo
{
public int OSVersionInfoSize;
public int MajorVersion;
public int MinorVersion;
public int BuildNumber;
public int PlatformId; [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]
public String versionString;
} [ StructLayout( LayoutKind.Sequential )]
public struct OSVersionInfo2
{
public int OSVersionInfoSize;
public int MajorVersion;
public int MinorVersion;
public int BuildNumber;
public int PlatformId; [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]
public String versionString;
} public class LibWrap
{
[ DllImport( "kernel32" )]
public static extern bool GetVersionEx( [In, Out] OSVersionInfo osvi ); [ DllImport( "kernel32", EntryPoint="GetVersionEx" )]
public static extern bool GetVersionEx2( ref OSVersionInfo2 osvi );
} public class App
{
public static void Main()
{
Console.WriteLine( "\nPassing OSVersionInfo as class" ); OSVersionInfo osvi = new OSVersionInfo();
osvi.OSVersionInfoSize = Marshal.SizeOf( osvi ); LibWrap.GetVersionEx( osvi );
Console.WriteLine( "Class size: {0} \nOperation System : {1}\nPack: {2}", osvi.OSVersionInfoSize, OpSysName(osvi.MajorVersion, osvi.MinorVersion,osvi.PlatformId),osvi.versionString);
Console.WriteLine("{0}", osvi.PlatformId); Console.WriteLine( "\nPassing OSVersionInfo as struct" );
OSVersionInfo2 osvi2 = new OSVersionInfo2();
osvi2.OSVersionInfoSize = Marshal.SizeOf( osvi2 ); LibWrap.GetVersionEx2( ref osvi2 );
Console.WriteLine( "Static size: {0} \nOperation System : {1}\nPack: {2}", osvi2.OSVersionInfoSize, OpSysName(osvi2.MajorVersion, osvi2.MinorVersion,osvi2.PlatformId),osvi2.versionString); }
public static String OpSysName(int MajorVersion,int MinorVersion ,int PlatformId)
{
String str_opn =String.Format("{0}.{1}",MajorVersion,MinorVersion); switch(str_opn)
{
case "4.0":
return win95_nt40(PlatformId);
case "4.10":
return "Windows 98";
case "4.90":
return "Windows Me";
case "3.51":
return "Windows NT 3.51";
case "5.0":
return "Windwos 2000";
case "5.1":
return "Windwos XP";
case "5.2":
return "Windows Server 2003 family";
default:
return "This windows version is not distinguish!";
}
}
public static String win95_nt40(int PlatformId)
{
switch(PlatformId)
{
case 1:
return "Windows 95";
case 2:
return "Windows NT 4.0";
default:
return "This windows version is not distinguish!";
}
}
}
}如何获得 WINDOWS 版本[C# 版]
原创
©著作权归作者所有:来自51CTO博客作者biyusr216的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Windows 11【1001问】查看Windows 11版本的18种方法
随着技术的飞速发展,操作系统作为连接硬件与软件的核心桥梁,其版本管理和更新变得尤为重要。对于用户而言,了解自己设备上运行的具体Windows 11版本不仅有助于优化系统性能,还能确保安全性和兼容性。然而,不同场景和需求可能要求我们采用不同的方法来查看这些信息。本文将详细介绍18种查看Windows 11版本的方法,从最直观的图形界面操作到深入系统的命令行工具,每一种方法都有其独特的应用场景和技术背景。无论你是初学者还是资深IT专业人士,都能从中找到适合自己的解决方案。
Windows版本号查询 查询Windows版本 Windows 11 Windows 11 1001问 如何查询Windows版本 -
C# 获得系统环境
using System;using Sys...
System 文件系统 Windows -
使用C#获得系统信息
这个类和前两个类不同,它的公共属性我们能利用的机会很少,我们为了获得系统信息主要是使用它的OpenSubKey 方
c语言 开发语言 System 系统信息 Windows -
如何通过每两点间采用赫尔米特曲线实现形似通过所有点的非均匀有理化样条曲线
是的,如果观
制造 样条曲线 非均匀有理 权重
















