How to get a Windows version [C # version]

xiaoxiao2021-03-06  23

Using system;

Using system.Runtime.InteropServices;

Namespace getWindowsVersion

{

[Structlayout (layoutkind.sequential)]

Public Class OsversionInfo

{

Public int ost osversioninfosize;

Public int majorversion;

Public int minorversion;

Public int buildnumber;

Public int platformi;

[Marshalas (UnmanagedType.Byvaltstr, SIZECONST = 128)]]]

Public String VersionString;

}

[Structlayout (layoutkind.sequential)]

Public struct osversioninfo2

{

Public int ost osversioninfosize;

Public int majorversion;

Public int minorversion;

Public int buildnumber;

Public int platformi;

[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.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!";

}

}

}

}

转载请注明原文地址:https://www.9cbs.com/read-78566.html

New Post(0)