To get Operation System Information:
Dim sb As New StringBuilder([String].Empty)
sb.AppendLine("Operation System Information")
sb.AppendLine("----------------------------")
sb.AppendLine([String].Format("Name = {0}", JCS.OSVersionInfo.Name))
sb.AppendLine([String].Format("Edition = {0}", JCS.OSVersionInfo.Edition))
If JCS.OSVersionInfo.ServicePack <> String.Empty Then
sb.AppendLine([String].Format("Service Pack = {0}", JCS.OSVersionInfo.ServicePack))
Else
sb.AppendLine("Service Pack = None")
End If
sb.AppendLine([String].Format("Version = {0}", JCS.OSVersionInfo.VersionString))
sb.AppendLine([String].Format("ProcessorBits = {0}", JCS.OSVersionInfo.ProcessorBits))
sb.AppendLine([String].Format("OSBits = {0}", JCS.OSVersionInfo.OSBits))
sb.AppendLine([String].Format("ProgramBits = {0}", JCS.OSVersionInfo.ProgramBits))
MsgBox(sb.ToString)
Write the Class OSVersionInfo.vb :
#Region "USINGS"
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Text
#End Region
Namespace JCS
Public NotInheritable Class OSVersionInfo
#Region "ENUMS"
Public Enum SoftwareArchitecture
Unknown = 0
Bit32 = 1
Bit64 = 2
End Enum
Public Enum ProcessorArchitecture
Unknown = 0
Bit32 = 1
Bit64 = 2
Itanium64 = 3
End Enum
#End Region
#Region "DELEGATE DECLARATION"
Private Delegate Function IsWow64ProcessDelegate(<[In]> handle As IntPtr, <Out> ByRef isWow64Process As Boolean) As Boolean
#End Region
#Region "BITS"
''' <summary>
''' Determines if the current application is 32 or 64-bit.
''' </summary>
Public Shared ReadOnly Property ProgramBits() As SoftwareArchitecture
Get
Dim pbits As SoftwareArchitecture = SoftwareArchitecture.Unknown
Dim test As System.Collections.IDictionary = Environment.GetEnvironmentVariables()
Select Case IntPtr.Size * 8
Case 64
pbits = SoftwareArchitecture.Bit64
Exit Select
Case 32
pbits = SoftwareArchitecture.Bit32
Exit Select
Case Else
pbits = SoftwareArchitecture.Unknown
Exit Select
End Select
' int getOSArchitecture()
'{
' string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
' return ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? 32 : 64);
'}
'ProcessorArchitecture pbits = ProcessorArchitecture.Unknown;
'try
'{
' SYSTEM_INFO l_System_Info = new SYSTEM_INFO();
' GetSystemInfo(ref l_System_Info);
' switch (l_System_Info.uProcessorInfo.wProcessorArchitecture)
' {
' case 9: // PROCESSOR_ARCHITECTURE_AMD64
' pbits = ProcessorArchitecture.Bit64;
' break;
' case 6: // PROCESSOR_ARCHITECTURE_IA64
' pbits = ProcessorArchitecture.Itanium64;
' break;
' case 0: // PROCESSOR_ARCHITECTURE_INTEL
' pbits = ProcessorArchitecture.Bit32;
' break;
' default: // PROCESSOR_ARCHITECTURE_UNKNOWN
' pbits = ProcessorArchitecture.Unknown;
' break;
' }
'}
'catch
'{
' Ignore
'}
'return pbits;
Return pbits
End Get
End Property
Public Shared ReadOnly Property OSBits() As SoftwareArchitecture
Get
Dim osbits__1 As SoftwareArchitecture = SoftwareArchitecture.Unknown
Select Case IntPtr.Size * 8
Case 64
osbits__1 = SoftwareArchitecture.Bit64
Exit Select
Case 32
If Is32BitProcessOn64BitProcessor() Then
osbits__1 = SoftwareArchitecture.Bit64
Else
osbits__1 = SoftwareArchitecture.Bit32
End If
Exit Select
Case Else
osbits__1 = SoftwareArchitecture.Unknown
Exit Select
End Select
Return osbits__1
End Get
End Property
''' <summary>
''' Determines if the current processor is 32 or 64-bit.
''' </summary>
Public Shared ReadOnly Property ProcessorBits() As ProcessorArchitecture
Get
Dim pbits As ProcessorArchitecture = ProcessorArchitecture.Unknown
Try
Dim l_System_Info As New SYSTEM_INFO()
GetNativeSystemInfo(l_System_Info)
Select Case l_System_Info.uProcessorInfo.wProcessorArchitecture
Case 9
' PROCESSOR_ARCHITECTURE_AMD64
pbits = ProcessorArchitecture.Bit64
Exit Select
Case 6
' PROCESSOR_ARCHITECTURE_IA64
pbits = ProcessorArchitecture.Itanium64
Exit Select
Case 0
' PROCESSOR_ARCHITECTURE_INTEL
pbits = ProcessorArchitecture.Bit32
Exit Select
Case Else
' PROCESSOR_ARCHITECTURE_UNKNOWN
pbits = ProcessorArchitecture.Unknown
Exit Select
End Select
' Ignore
Catch
End Try
Return pbits
End Get
End Property
#End Region
#Region "EDITION"
Private Shared s_Edition As String
''' <summary>
''' Gets the edition of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property Edition() As String
Get
If s_Edition IsNot Nothing Then
Return s_Edition
End If
'***** RETURN *****//
Dim edition__1 As String = [String].Empty
Dim osVersion As OperatingSystem = Environment.OSVersion
Dim osVersionInfo As New OSVERSIONINFOEX()
osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(GetType(OSVERSIONINFOEX))
If GetVersionEx(osVersionInfo) Then
Dim majorVersion As Integer = osVersion.Version.Major
Dim minorVersion As Integer = osVersion.Version.Minor
Dim productType As Byte = osVersionInfo.wProductType
Dim suiteMask As Short = osVersionInfo.wSuiteMask
'#Region "VERSION 4"
If majorVersion = 4 Then
If productType = VER_NT_WORKSTATION Then
' Windows NT 4.0 Workstation
edition__1 = "Workstation"
ElseIf productType = VER_NT_SERVER Then
If (suiteMask And VER_SUITE_ENTERPRISE) <> 0 Then
' Windows NT 4.0 Server Enterprise
edition__1 = "Enterprise Server"
Else
' Windows NT 4.0 Server
edition__1 = "Standard Server"
End If
End If
'#End Region
'#Region "VERSION 5"
ElseIf majorVersion = 5 Then
If productType = VER_NT_WORKSTATION Then
If (suiteMask And VER_SUITE_PERSONAL) <> 0 Then
edition__1 = "Home"
Else
If GetSystemMetrics(86) = 0 Then
' 86 == SM_TABLETPC
edition__1 = "Professional"
Else
edition__1 = "Tablet Edition"
End If
End If
ElseIf productType = VER_NT_SERVER Then
If minorVersion = 0 Then
If (suiteMask And VER_SUITE_DATACENTER) <> 0 Then
' Windows 2000 Datacenter Server
edition__1 = "Datacenter Server"
ElseIf (suiteMask And VER_SUITE_ENTERPRISE) <> 0 Then
' Windows 2000 Advanced Server
edition__1 = "Advanced Server"
Else
' Windows 2000 Server
edition__1 = "Server"
End If
Else
If (suiteMask And VER_SUITE_DATACENTER) <> 0 Then
' Windows Server 2003 Datacenter Edition
edition__1 = "Datacenter"
ElseIf (suiteMask And VER_SUITE_ENTERPRISE) <> 0 Then
' Windows Server 2003 Enterprise Edition
edition__1 = "Enterprise"
ElseIf (suiteMask And VER_SUITE_BLADE) <> 0 Then
' Windows Server 2003 Web Edition
edition__1 = "Web Edition"
Else
' Windows Server 2003 Standard Edition
edition__1 = "Standard"
End If
End If
End If
'#End Region
'#Region "VERSION 6"
ElseIf majorVersion = 6 Then
Dim ed As Integer
If GetProductInfo(majorVersion, minorVersion, osVersionInfo.wServicePackMajor, osVersionInfo.wServicePackMinor, ed) Then
Select Case ed
Case PRODUCT_BUSINESS
edition__1 = "Business"
Exit Select
Case PRODUCT_BUSINESS_N
edition__1 = "Business N"
Exit Select
Case PRODUCT_CLUSTER_SERVER
edition__1 = "HPC Edition"
Exit Select
Case PRODUCT_CLUSTER_SERVER_V
edition__1 = "HPC Edition without Hyper-V"
Exit Select
Case PRODUCT_DATACENTER_SERVER
edition__1 = "Datacenter Server"
Exit Select
Case PRODUCT_DATACENTER_SERVER_CORE
edition__1 = "Datacenter Server (core installation)"
Exit Select
Case PRODUCT_DATACENTER_SERVER_V
edition__1 = "Datacenter Server without Hyper-V"
Exit Select
Case PRODUCT_DATACENTER_SERVER_CORE_V
edition__1 = "Datacenter Server without Hyper-V (core installation)"
Exit Select
Case PRODUCT_EMBEDDED
edition__1 = "Embedded"
Exit Select
Case PRODUCT_ENTERPRISE
edition__1 = "Enterprise"
Exit Select
Case PRODUCT_ENTERPRISE_N
edition__1 = "Enterprise N"
Exit Select
Case PRODUCT_ENTERPRISE_E
edition__1 = "Enterprise E"
Exit Select
Case PRODUCT_ENTERPRISE_SERVER
edition__1 = "Enterprise Server"
Exit Select
Case PRODUCT_ENTERPRISE_SERVER_CORE
edition__1 = "Enterprise Server (core installation)"
Exit Select
Case PRODUCT_ENTERPRISE_SERVER_CORE_V
edition__1 = "Enterprise Server without Hyper-V (core installation)"
Exit Select
Case PRODUCT_ENTERPRISE_SERVER_IA64
edition__1 = "Enterprise Server for Itanium-based Systems"
Exit Select
Case PRODUCT_ENTERPRISE_SERVER_V
edition__1 = "Enterprise Server without Hyper-V"
Exit Select
Case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT
edition__1 = "Essential Business Server MGMT"
Exit Select
Case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL
edition__1 = "Essential Business Server ADDL"
Exit Select
Case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC
edition__1 = "Essential Business Server MGMTSVC"
Exit Select
Case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC
edition__1 = "Essential Business Server ADDLSVC"
Exit Select
Case PRODUCT_HOME_BASIC
edition__1 = "Home Basic"
Exit Select
Case PRODUCT_HOME_BASIC_N
edition__1 = "Home Basic N"
Exit Select
Case PRODUCT_HOME_BASIC_E
edition__1 = "Home Basic E"
Exit Select
Case PRODUCT_HOME_PREMIUM
edition__1 = "Home Premium"
Exit Select
Case PRODUCT_HOME_PREMIUM_N
edition__1 = "Home Premium N"
Exit Select
Case PRODUCT_HOME_PREMIUM_E
edition__1 = "Home Premium E"
Exit Select
Case PRODUCT_HOME_PREMIUM_SERVER
edition__1 = "Home Premium Server"
Exit Select
Case PRODUCT_HYPERV
edition__1 = "Microsoft Hyper-V Server"
Exit Select
Case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
edition__1 = "Windows Essential Business Management Server"
Exit Select
Case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
edition__1 = "Windows Essential Business Messaging Server"
Exit Select
Case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
edition__1 = "Windows Essential Business Security Server"
Exit Select
Case PRODUCT_PROFESSIONAL
edition__1 = "Professional"
Exit Select
Case PRODUCT_PROFESSIONAL_N
edition__1 = "Professional N"
Exit Select
Case PRODUCT_PROFESSIONAL_E
edition__1 = "Professional E"
Exit Select
Case PRODUCT_SB_SOLUTION_SERVER
edition__1 = "SB Solution Server"
Exit Select
Case PRODUCT_SB_SOLUTION_SERVER_EM
edition__1 = "SB Solution Server EM"
Exit Select
Case PRODUCT_SERVER_FOR_SB_SOLUTIONS
edition__1 = "Server for SB Solutions"
Exit Select
Case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM
edition__1 = "Server for SB Solutions EM"
Exit Select
Case PRODUCT_SERVER_FOR_SMALLBUSINESS
edition__1 = "Windows Essential Server Solutions"
Exit Select
Case PRODUCT_SERVER_FOR_SMALLBUSINESS_V
edition__1 = "Windows Essential Server Solutions without Hyper-V"
Exit Select
Case PRODUCT_SERVER_FOUNDATION
edition__1 = "Server Foundation"
Exit Select
Case PRODUCT_SMALLBUSINESS_SERVER
edition__1 = "Windows Small Business Server"
Exit Select
Case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
edition__1 = "Windows Small Business Server Premium"
Exit Select
Case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE
edition__1 = "Windows Small Business Server Premium (core installation)"
Exit Select
Case PRODUCT_SOLUTION_EMBEDDEDSERVER
edition__1 = "Solution Embedded Server"
Exit Select
Case PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE
edition__1 = "Solution Embedded Server (core installation)"
Exit Select
Case PRODUCT_STANDARD_SERVER
edition__1 = "Standard Server"
Exit Select
Case PRODUCT_STANDARD_SERVER_CORE
edition__1 = "Standard Server (core installation)"
Exit Select
Case PRODUCT_STANDARD_SERVER_SOLUTIONS
edition__1 = "Standard Server Solutions"
Exit Select
Case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE
edition__1 = "Standard Server Solutions (core installation)"
Exit Select
Case PRODUCT_STANDARD_SERVER_CORE_V
edition__1 = "Standard Server without Hyper-V (core installation)"
Exit Select
Case PRODUCT_STANDARD_SERVER_V
edition__1 = "Standard Server without Hyper-V"
Exit Select
Case PRODUCT_STARTER
edition__1 = "Starter"
Exit Select
Case PRODUCT_STARTER_N
edition__1 = "Starter N"
Exit Select
Case PRODUCT_STARTER_E
edition__1 = "Starter E"
Exit Select
Case PRODUCT_STORAGE_ENTERPRISE_SERVER
edition__1 = "Enterprise Storage Server"
Exit Select
Case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE
edition__1 = "Enterprise Storage Server (core installation)"
Exit Select
Case PRODUCT_STORAGE_EXPRESS_SERVER
edition__1 = "Express Storage Server"
Exit Select
Case PRODUCT_STORAGE_EXPRESS_SERVER_CORE
edition__1 = "Express Storage Server (core installation)"
Exit Select
Case PRODUCT_STORAGE_STANDARD_SERVER
edition__1 = "Standard Storage Server"
Exit Select
Case PRODUCT_STORAGE_STANDARD_SERVER_CORE
edition__1 = "Standard Storage Server (core installation)"
Exit Select
Case PRODUCT_STORAGE_WORKGROUP_SERVER
edition__1 = "Workgroup Storage Server"
Exit Select
Case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE
edition__1 = "Workgroup Storage Server (core installation)"
Exit Select
Case PRODUCT_UNDEFINED
edition__1 = "Unknown product"
Exit Select
Case PRODUCT_ULTIMATE
edition__1 = "Ultimate"
Exit Select
Case PRODUCT_ULTIMATE_N
edition__1 = "Ultimate N"
Exit Select
Case PRODUCT_ULTIMATE_E
edition__1 = "Ultimate E"
Exit Select
Case PRODUCT_WEB_SERVER
edition__1 = "Web Server"
Exit Select
Case PRODUCT_WEB_SERVER_CORE
edition__1 = "Web Server (core installation)"
Exit Select
End Select
End If
'#End Region
End If
End If
s_Edition = edition__1
Return edition__1
End Get
End Property
#End Region
#Region "NAME"
Private Shared s_Name As String
''' <summary>
''' Gets the name of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property Name() As String
Get
If s_Name IsNot Nothing Then
Return s_Name
End If
'***** RETURN *****//
Dim name__1 As String = "unknown"
Dim osVersion As OperatingSystem = Environment.OSVersion
Dim osVersionInfo As New OSVERSIONINFOEX()
osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(GetType(OSVERSIONINFOEX))
If GetVersionEx(osVersionInfo) Then
Dim majorVersion As Integer = osVersion.Version.Major
Dim minorVersion As Integer = osVersion.Version.Minor
Select Case osVersion.Platform
Case PlatformID.Win32S
name__1 = "Windows 3.1"
Exit Select
Case PlatformID.WinCE
name__1 = "Windows CE"
Exit Select
Case PlatformID.Win32Windows
If True Then
If majorVersion = 4 Then
Dim csdVersion As String = osVersionInfo.szCSDVersion
Select Case minorVersion
Case 0
If csdVersion = "B" OrElse csdVersion = "C" Then
name__1 = "Windows 95 OSR2"
Else
name__1 = "Windows 95"
End If
Exit Select
Case 10
If csdVersion = "A" Then
name__1 = "Windows 98 Second Edition"
Else
name__1 = "Windows 98"
End If
Exit Select
Case 90
name__1 = "Windows Me"
Exit Select
End Select
End If
Exit Select
End If
Case PlatformID.Win32NT
If True Then
Dim productType As Byte = osVersionInfo.wProductType
Select Case majorVersion
Case 3
name__1 = "Windows NT 3.51"
Exit Select
Case 4
Select Case productType
Case 1
name__1 = "Windows NT 4.0"
Exit Select
Case 3
name__1 = "Windows NT 4.0 Server"
Exit Select
End Select
Exit Select
Case 5
Select Case minorVersion
Case 0
name__1 = "Windows 2000"
Exit Select
Case 1
name__1 = "Windows XP"
Exit Select
Case 2
name__1 = "Windows Server 2003"
Exit Select
End Select
Exit Select
Case 6
Select Case minorVersion
Case 0
Select Case productType
Case 1
name__1 = "Windows Vista"
Exit Select
Case 3
name__1 = "Windows Server 2008"
Exit Select
End Select
Exit Select
Case 1
Select Case productType
Case 1
name__1 = "Windows 7"
Exit Select
Case 3
name__1 = "Windows Server 2008 R2"
Exit Select
End Select
Exit Select
Case 2
Select Case productType
Case 1
name__1 = "Windows 8"
Exit Select
Case 3
name__1 = "Windows Server 2012"
Exit Select
End Select
Exit Select
End Select
Exit Select
End Select
Exit Select
End If
End Select
End If
s_Name = name__1
Return name__1
End Get
End Property
#End Region
#Region "PINVOKE"
#Region "GET"
#Region "PRODUCT INFO"
<DllImport("Kernel32.dll")> _
Friend Shared Function GetProductInfo(osMajorVersion As Integer, osMinorVersion As Integer, spMajorVersion As Integer, spMinorVersion As Integer, ByRef edition As Integer) As Boolean
End Function
#End Region
#Region "VERSION"
<DllImport("kernel32.dll")> _
Private Shared Function GetVersionEx(ByRef osVersionInfo As OSVERSIONINFOEX) As Boolean
End Function
#End Region
#Region "SYSTEMMETRICS"
<DllImport("user32")> _
Public Shared Function GetSystemMetrics(nIndex As Integer) As Integer
End Function
#End Region
#Region "SYSTEMINFO"
<DllImport("kernel32.dll")> _
Public Shared Sub GetSystemInfo(<MarshalAs(UnmanagedType.Struct)> ByRef lpSystemInfo As SYSTEM_INFO)
End Sub
<DllImport("kernel32.dll")> _
Public Shared Sub GetNativeSystemInfo(<MarshalAs(UnmanagedType.Struct)> ByRef lpSystemInfo As SYSTEM_INFO)
End Sub
#End Region
#End Region
#Region "OSVERSIONINFOEX"
<StructLayout(LayoutKind.Sequential)> _
Private Structure OSVERSIONINFOEX
Public dwOSVersionInfoSize As Integer
Public dwMajorVersion As Integer
Public dwMinorVersion As Integer
Public dwBuildNumber As Integer
Public dwPlatformId As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> _
Public szCSDVersion As String
Public wServicePackMajor As Short
Public wServicePackMinor As Short
Public wSuiteMask As Short
Public wProductType As Byte
Public wReserved As Byte
End Structure
#End Region
#Region "SYSTEM_INFO"
<StructLayout(LayoutKind.Sequential)> _
Public Structure SYSTEM_INFO
Friend uProcessorInfo As _PROCESSOR_INFO_UNION
Public dwPageSize As UInteger
Public lpMinimumApplicationAddress As IntPtr
Public lpMaximumApplicationAddress As IntPtr
Public dwActiveProcessorMask As IntPtr
Public dwNumberOfProcessors As UInteger
Public dwProcessorType As UInteger
Public dwAllocationGranularity As UInteger
Public dwProcessorLevel As UShort
Public dwProcessorRevision As UShort
End Structure
#End Region
#Region "_PROCESSOR_INFO_UNION"
<StructLayout(LayoutKind.Explicit)> _
Public Structure _PROCESSOR_INFO_UNION
<FieldOffset(0)> _
Friend dwOemId As UInteger
<FieldOffset(0)> _
Friend wProcessorArchitecture As UShort
<FieldOffset(2)> _
Friend wReserved As UShort
End Structure
#End Region
#Region "64 BIT OS DETECTION"
<DllImport("kernel32", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function LoadLibrary(libraryName As String) As IntPtr
End Function
<DllImport("kernel32", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function GetProcAddress(hwnd As IntPtr, procedureName As String) As IntPtr
End Function
#End Region
#Region "PRODUCT"
Private Const PRODUCT_UNDEFINED As Integer = &H0
Private Const PRODUCT_ULTIMATE As Integer = &H1
Private Const PRODUCT_HOME_BASIC As Integer = &H2
Private Const PRODUCT_HOME_PREMIUM As Integer = &H3
Private Const PRODUCT_ENTERPRISE As Integer = &H4
Private Const PRODUCT_HOME_BASIC_N As Integer = &H5
Private Const PRODUCT_BUSINESS As Integer = &H6
Private Const PRODUCT_STANDARD_SERVER As Integer = &H7
Private Const PRODUCT_DATACENTER_SERVER As Integer = &H8
Private Const PRODUCT_SMALLBUSINESS_SERVER As Integer = &H9
Private Const PRODUCT_ENTERPRISE_SERVER As Integer = &HA
Private Const PRODUCT_STARTER As Integer = &HB
Private Const PRODUCT_DATACENTER_SERVER_CORE As Integer = &HC
Private Const PRODUCT_STANDARD_SERVER_CORE As Integer = &HD
Private Const PRODUCT_ENTERPRISE_SERVER_CORE As Integer = &HE
Private Const PRODUCT_ENTERPRISE_SERVER_IA64 As Integer = &HF
Private Const PRODUCT_BUSINESS_N As Integer = &H10
Private Const PRODUCT_WEB_SERVER As Integer = &H11
Private Const PRODUCT_CLUSTER_SERVER As Integer = &H12
Private Const PRODUCT_HOME_SERVER As Integer = &H13
Private Const PRODUCT_STORAGE_EXPRESS_SERVER As Integer = &H14
Private Const PRODUCT_STORAGE_STANDARD_SERVER As Integer = &H15
Private Const PRODUCT_STORAGE_WORKGROUP_SERVER As Integer = &H16
Private Const PRODUCT_STORAGE_ENTERPRISE_SERVER As Integer = &H17
Private Const PRODUCT_SERVER_FOR_SMALLBUSINESS As Integer = &H18
Private Const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM As Integer = &H19
Private Const PRODUCT_HOME_PREMIUM_N As Integer = &H1A
Private Const PRODUCT_ENTERPRISE_N As Integer = &H1B
Private Const PRODUCT_ULTIMATE_N As Integer = &H1C
Private Const PRODUCT_WEB_SERVER_CORE As Integer = &H1D
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT As Integer = &H1E
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY As Integer = &H1F
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING As Integer = &H20
Private Const PRODUCT_SERVER_FOUNDATION As Integer = &H21
Private Const PRODUCT_HOME_PREMIUM_SERVER As Integer = &H22
Private Const PRODUCT_SERVER_FOR_SMALLBUSINESS_V As Integer = &H23
Private Const PRODUCT_STANDARD_SERVER_V As Integer = &H24
Private Const PRODUCT_DATACENTER_SERVER_V As Integer = &H25
Private Const PRODUCT_ENTERPRISE_SERVER_V As Integer = &H26
Private Const PRODUCT_DATACENTER_SERVER_CORE_V As Integer = &H27
Private Const PRODUCT_STANDARD_SERVER_CORE_V As Integer = &H28
Private Const PRODUCT_ENTERPRISE_SERVER_CORE_V As Integer = &H29
Private Const PRODUCT_HYPERV As Integer = &H2A
Private Const PRODUCT_STORAGE_EXPRESS_SERVER_CORE As Integer = &H2B
Private Const PRODUCT_STORAGE_STANDARD_SERVER_CORE As Integer = &H2C
Private Const PRODUCT_STORAGE_WORKGROUP_SERVER_CORE As Integer = &H2D
Private Const PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE As Integer = &H2E
Private Const PRODUCT_STARTER_N As Integer = &H2F
Private Const PRODUCT_PROFESSIONAL As Integer = &H30
Private Const PRODUCT_PROFESSIONAL_N As Integer = &H31
Private Const PRODUCT_SB_SOLUTION_SERVER As Integer = &H32
Private Const PRODUCT_SERVER_FOR_SB_SOLUTIONS As Integer = &H33
Private Const PRODUCT_STANDARD_SERVER_SOLUTIONS As Integer = &H34
Private Const PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE As Integer = &H35
Private Const PRODUCT_SB_SOLUTION_SERVER_EM As Integer = &H36
Private Const PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM As Integer = &H37
Private Const PRODUCT_SOLUTION_EMBEDDEDSERVER As Integer = &H38
Private Const PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE As Integer = &H39
'private const int ???? = 0x0000003A;
Private Const PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT As Integer = &H3B
Private Const PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL As Integer = &H3C
Private Const PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC As Integer = &H3D
Private Const PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC As Integer = &H3E
Private Const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE As Integer = &H3F
Private Const PRODUCT_CLUSTER_SERVER_V As Integer = &H40
Private Const PRODUCT_EMBEDDED As Integer = &H41
Private Const PRODUCT_STARTER_E As Integer = &H42
Private Const PRODUCT_HOME_BASIC_E As Integer = &H43
Private Const PRODUCT_HOME_PREMIUM_E As Integer = &H44
Private Const PRODUCT_PROFESSIONAL_E As Integer = &H45
Private Const PRODUCT_ENTERPRISE_E As Integer = &H46
Private Const PRODUCT_ULTIMATE_E As Integer = &H47
'private const int PRODUCT_UNLICENSED = 0xABCDABCD;
#End Region
#Region "VERSIONS"
Private Const VER_NT_WORKSTATION As Integer = 1
Private Const VER_NT_DOMAIN_CONTROLLER As Integer = 2
Private Const VER_NT_SERVER As Integer = 3
Private Const VER_SUITE_SMALLBUSINESS As Integer = 1
Private Const VER_SUITE_ENTERPRISE As Integer = 2
Private Const VER_SUITE_TERMINAL As Integer = 16
Private Const VER_SUITE_DATACENTER As Integer = 128
Private Const VER_SUITE_SINGLEUSERTS As Integer = 256
Private Const VER_SUITE_PERSONAL As Integer = 512
Private Const VER_SUITE_BLADE As Integer = 1024
#End Region
#End Region
#Region "SERVICE PACK"
''' <summary>
''' Gets the service pack information of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property ServicePack() As String
Get
Dim servicePack__1 As String = [String].Empty
Dim osVersionInfo As New OSVERSIONINFOEX()
osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(GetType(OSVERSIONINFOEX))
If GetVersionEx(osVersionInfo) Then
servicePack__1 = osVersionInfo.szCSDVersion
End If
Return servicePack__1
End Get
End Property
#End Region
#Region "VERSION"
#Region "BUILD"
''' <summary>
''' Gets the build version number of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property BuildVersion() As Integer
Get
Return Environment.OSVersion.Version.Build
End Get
End Property
#End Region
#Region "FULL"
#Region "STRING"
''' <summary>
''' Gets the full version string of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property VersionString() As String
Get
Return Environment.OSVersion.Version.ToString()
End Get
End Property
#End Region
#Region "VERSION"
''' <summary>
''' Gets the full version of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property Version() As Version
Get
Return Environment.OSVersion.Version
End Get
End Property
#End Region
#End Region
#Region "MAJOR"
''' <summary>
''' Gets the major version number of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property MajorVersion() As Integer
Get
Return Environment.OSVersion.Version.Major
End Get
End Property
#End Region
#Region "MINOR"
''' <summary>
''' Gets the minor version number of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property MinorVersion() As Integer
Get
Return Environment.OSVersion.Version.Minor
End Get
End Property
#End Region
#Region "REVISION"
''' <summary>
''' Gets the revision version number of the operating system running on this computer.
''' </summary>
Public Shared ReadOnly Property RevisionVersion() As Integer
Get
Return Environment.OSVersion.Version.Revision
End Get
End Property
#End Region
#End Region
#Region "64 BIT OS DETECTION"
Private Shared Function GetIsWow64ProcessDelegate() As IsWow64ProcessDelegate
Dim handle As IntPtr = LoadLibrary("kernel32")
If handle <> IntPtr.Zero Then
Dim fnPtr As IntPtr = GetProcAddress(handle, "IsWow64Process")
If fnPtr <> IntPtr.Zero Then
Return DirectCast(Marshal.GetDelegateForFunctionPointer(DirectCast(fnPtr, IntPtr), GetType(IsWow64ProcessDelegate)), IsWow64ProcessDelegate)
End If
End If
Return Nothing
End Function
Private Shared Function Is32BitProcessOn64BitProcessor() As Boolean
Dim fnDelegate As IsWow64ProcessDelegate = GetIsWow64ProcessDelegate()
If fnDelegate Is Nothing Then
Return False
End If
Dim isWow64 As Boolean
Dim retVal As Boolean = fnDelegate.Invoke(Process.GetCurrentProcess().Handle, isWow64)
If retVal = False Then
Return False
End If
Return isWow64
End Function
#End Region
End Class
End Namespace