home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 7_2009-2012.ISO / data / zips / kiCrypt_De2224926142012.psc / clsOperSystem.cls < prev   
Text File  |  2012-06-14  |  48KB  |  1,191 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cOperSystem"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  16. ' ***************************************************************************
  17. '  Module:        clsOperSystem
  18. '
  19. '  Description:   Determines the operating system.  When this class is
  20. '                 initialized, the GetWindowsVersion() routine is called.
  21. '                 This will instantly set the flags to their appropriate
  22. '                 value.  This module does not test with operating sytems
  23. '                 earlier than Windows NT4.
  24. '
  25. '                 Identifying the current operating system is usually not
  26. '                 the best way to determine whether a particular operating
  27. '                 system feature is present. This is because the operating
  28. '                 system may have had new features added in a redistributable
  29. '                 DLL. Rather than using GetVersionEx to determine the
  30. '                 operating system platform or version number, test for the
  31. '                 presence of the feature itself.
  32. '                 http://msdn.microsoft.com/en-us/library/ms724832(VS.85).aspx
  33. '
  34. ' Important:      This module must have access to modTrimStr.bas
  35. '
  36. ' -----------------------------------------------------------------------
  37. ' The base version information for various Windows versions is:
  38. '
  39. ' Version                     Number  Major  Minor  Other info
  40. ' -----------------------------------------------------------------------
  41. ' Windows 8                    ?.?      ?      ?    Official release due in Fall of 2012
  42. ' Windows 7                    6.1      6      1    OSVERIONINFOEX.wProductType = VER_NT_WORKSTATION
  43. ' Windows Server 2008 R2       6.1      6      1    OSVERIONINFOEX.wProductType <> VER_NT_WORKSTATION
  44. ' Windows Server 2008          6.0      6      0    OSVERSIONINFOEX.wProductType <> VER_NT_WORKSTATION
  45. ' Windows Vista                6.0      6      0    OSVERSIONINFOEX.wProductType = VER_NT_WORKSTATION
  46. ' Windows Server 2003 R2       5.2      5      2    GetSystemMetrics(SM_SERVERR2) <> 0
  47. ' Windows Server 2003          5.2      5      2    GetSystemMetrics(SM_SERVERR2) = 0
  48. ' Windows Home Server          5.2      5      2    OSVERSIONINFOEX.wSuiteMask = VER_SUITE_WH_SERVER
  49. ' Windows XP Pro x64 Edition   5.2      5      2    (OSVERSIONINFOEX.wProductType = VER_NT_WORKSTATION) And
  50. '                                                   (SYSTEM_INFO.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64)
  51. ' Windows XP                   5.1      5      1
  52. ' Windows 2000                 5.0      5      0
  53. ' Windows NT4                  4.0      4      0
  54. ' -----------------------------------------------------------------------
  55. '
  56. ' Reference:   Randy Birch
  57. '              GetVersionEx: Windows Version Info (Wrapper Routines)
  58. '              http://vbnet.mvps.org/code/helpers/iswinversion.htm
  59. '
  60. '              Karl Perterson's Classic VB
  61. '              http://www.mvps.org/vb/
  62. '
  63. '              GetVersionEx Function
  64. '              http://msdn2.microsoft.com/en-us/library/ms724451(VS.85).aspx
  65. '
  66. '              Getting the System Version (Source code)
  67. '              http://msdn2.microsoft.com/en-us/library/ms724429(VS.85).aspx
  68. '
  69. '              Operating System Version
  70. '              http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs.85%29.aspx
  71. '              
  72. '              OSVersionInfoEx Structure
  73. '              http://msdn2.microsoft.com/en-us/library/ms724833(VS.85).aspx
  74. '
  75. '              GetSystemMetrics Function
  76. '              http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx
  77. '
  78. '              GetSystemInfo Function
  79. '              http://msdn2.microsoft.com/en-us/library/ms724381(VS.85).aspx
  80. '
  81. '              GetProductInfo Function
  82. '              http://msdn2.microsoft.com/en-us/library/ms724358.aspx
  83. '
  84. ' Important:   Developers working in the Windows Vista environment should be
  85. '              aware that if this code is run in the VB IDE and you are
  86. '              notified that the operating system is other than Windows Vista,
  87. '              do the following:
  88. '
  89. '              1.  Close the VB IDE (Visual BASIC Integrated Development Environment)
  90. '              2.  Locate the file VB.EXE
  91. '              3.  Right mouse click and select Properties >> Compatibility tab
  92. '              4.  Remove any checkmarks and close the window
  93. '              5.  Restart the VB IDE
  94. '
  95. '  -----------------------------------------------------------------------
  96. '
  97. '  Example:    Set objOS = new cOperSystem  ' Instantiate class object
  98. '
  99. '              ' Is this Windows XP?
  100. '              If objOS.bWinXP then
  101. '                  Msgbox objOS.VersionName & vbNewLine & _
  102. '                          "Version " & objOS.VersionNumber & " " & _
  103. '                          objOS.ServicePack
  104. '              Else
  105. '                  Msgbox "This is not Windows XP"
  106. '              End If
  107. '
  108. '              Set objOS = Nothing  ' Free class object from memory
  109. '
  110. ' ===========================================================================
  111. '    DATE      NAME / eMAIL
  112. '              DESCRIPTION
  113. ' -----------  --------------------------------------------------------------
  114. ' 15-Oct-2006  Kenneth Ives  kenaso@tx.rr.com
  115. '              Converted to a class, renamed some of the variables,
  116. '              Combined some of the routines for speed.  When this class is
  117. '              initialized, the GetWindowsVersion() routine is called.  This
  118. '              will instantly set the flags to their appropriate value.
  119. ' 16-Jan-2008  Kenneth Ives  kenaso@tx.rr.com
  120. '              Dropped support for any operating systems earlier than Windows
  121. '              NT4 Servers and Windows 2000.
  122. ' 17-Apr-2008  Kenneth Ives  kenaso@tx.rr.com
  123. '              Updated for additional Windows Vista versions.
  124. '              Updated 64-bit testing routines.
  125. ' 30-Jul-2008  Kenneth Ives  kenaso@tx.rr.com
  126. '              Updated for Windows 2000 Data Center Server
  127. ' 20-Aug-2008  Kenneth Ives  kenaso@tx.rr.com
  128. '              Updated testing logic for enhanced systems
  129. ' 04-May-2009  Kenneth Ives  kenaso@tx.rr.com
  130. '              Rewrote module.
  131. '              Added testing for additional Windows operating systems.
  132. ' 05-Sep-2009  Kenneth Ives  kenaso@tx.rr.com
  133. '              Thanks to Maria AAM for pointing out that I needed to add an
  134. '              additional property named bOperSystem64() denoting a 64-bit
  135. '              operating system in general
  136. ' 20-Jul-2011  Kenneth Ives  kenaso@tx.rr.com
  137. '              - Updated logic in TestForOldestVersion() routine
  138. '              - Added property bWinXPSP3() for Windows XP Service Pack 3
  139. '              - Updated IsWinXP() routine
  140. '              - Updated TestForOtherServers() routine
  141. ' 26-Mar-2012  Kenneth Ives  kenaso@tx.rr.com
  142. '              - Deleted RemoveTrailingNulls() routine from this module. 
  143. '              - Changed call to RemoveTrailingNulls() to TrimStr module 
  144. '                due to speed and accuracy.
  145. '              - Updated TestForOldestVersion() routine logic.
  146. ' ***************************************************************************
  147. Option Explicit
  148.  
  149. ' ***************************************************************************
  150. ' Constants
  151. ' ***************************************************************************
  152.   ' used by OSVERSIONINFOEX.PlatformID
  153.   Private Const VER_PLATFORM_WIN32_NT                As Long = 2
  154.  
  155.   ' used by OSVERSIONINFOEX.wProductType
  156.   Private Const VER_NT_WORKSTATION                   As Long = &H1     ' Windows Vista, XP Pro, XP Home Edition, or 2000 Pro
  157.   Private Const VER_NT_DOMAIN_CONTROLLER             As Long = &H2     ' Windows Server 2008, Windows Server 2003, or Windows 2000 Server
  158.   Private Const VER_NT_SERVER                        As Long = &H3     ' Windows Server 2008, Windows Server 2003, or Windows 2000 Server
  159.  
  160.   ' used by OSVERSIONINFOEX.wSuiteMask
  161.   Private Const VER_SUITE_SMALLBUSINESS              As Long = &H1     ' Microsoft Small Business Server w        As once installed on the system, but may have been upgraded to another version of Windows
  162.   Private Const VER_SUITE_ENTERPRISE                 As Long = &H2     ' Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, or Windows 2000 Advanced Server is installed
  163.   Private Const VER_SUITE_BACKOFFICE                 As Long = &H4     ' Windows backoffice suite
  164.   Private Const VER_SUITE_TERMINAL                   As Long = &H10    ' Terminal Services is installed
  165.   Private Const VER_SUITE_EMBEDDEDNT                 As Long = &H40    ' Windows XP Embedded is installed
  166.   Private Const VER_SUITE_DATACENTER                 As Long = &H80    ' Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition, or Windows 2000 Datacenter Server is installed
  167.   Private Const VER_SUITE_PERSONAL                   As Long = &H200   ' Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP Home Edition is installed
  168.   Private Const VER_SUITE_BLADE                      As Long = &H400   ' Windows Server 2003, Web Edition is installed
  169.   Private Const VER_SUITE_STORAGE_SERVER             As Long = &H2000  ' Windows Storage Server 2003 R2 or Windows Storage Server 2003 is installed
  170.   Private Const VER_SUITE_COMPUTE_SERVER             As Long = &H4000  ' Windows Server 2003, Compute Cluster Edition is installed
  171.   Private Const VER_SUITE_WH_SERVER                  As Long = &H8000  ' Windows home server is installed
  172.   Private Const VER_SUITE_SMALLBUSINESS_RESTRICTED   As Long = &H20    ' Microsoft Small Business Server is installed with the restrictive client license in force
  173.  
  174.   Private Const SM_TABLETPC                          As Long = 86
  175.   Private Const SM_MEDIACENTER                       As Long = 87
  176.   Private Const SM_STARTER                           As Long = 88
  177.   Private Const SM_SERVERR2                          As Long = 89
  178.  
  179.   Private Const PROCESSOR_ARCHITECTURE_INTEL         As Long = 0       ' 32-bit
  180.   Private Const PROCESSOR_ARCHITECTURE_IA64          As Long = 6       ' 64-bit
  181.   Private Const PROCESSOR_ARCHITECTURE_AMD64         As Long = 9       ' 64-bit
  182.  
  183.   ' GetProductInfo possible values
  184.   Private Const PRODUCT_ULTIMATE                     As Long = &H1     ' Ultimate Edition
  185.   Private Const PRODUCT_HOME_BASIC                   As Long = &H2     ' Home Basic Edition
  186.   Private Const PRODUCT_HOME_PREMIUM                 As Long = &H3     ' Home Premium Edition
  187.   Private Const PRODUCT_ENTERPRISE                   As Long = &H4     ' Enterprise Edition
  188.   Private Const PRODUCT_HOME_BASIC_N                 As Long = &H5     ' Home Basic Edition
  189.   Private Const PRODUCT_BUSINESS                     As Long = &H6     ' Business Edition
  190.   Private Const PRODUCT_STANDARD_SERVER              As Long = &H7     ' Server Standard Edition (full installation)
  191.   Private Const PRODUCT_DATACENTER_SERVER            As Long = &H8     ' Server Datacenter Edition (full installation)
  192.   Private Const PRODUCT_SMALLBUSINESS_SERVER         As Long = &H9     ' Small Business Server
  193.   Private Const PRODUCT_ENTERPRISE_SERVER            As Long = &HA     ' Server Enterprise Edition (full installation)
  194.   Private Const PRODUCT_STARTER                      As Long = &HB     ' Starter Edition
  195.   Private Const PRODUCT_DATACENTER_SERVER_CORE       As Long = &HC     ' Server Datacenter Edition (core installation)
  196.   Private Const PRODUCT_STANDARD_SERVER_CORE         As Long = &HD     ' Server Standard Edition (core installation)
  197.   Private Const PRODUCT_ENTERPRISE_SERVER_CORE       As Long = &HE     ' Server Enterprise Edition (core installation)
  198.   Private Const PRODUCT_ENTERPRISE_SERVER_IA64       As Long = &HF     ' Server Enterprise Edition for Itanium-based Systems
  199.   Private Const PRODUCT_BUSINESS_N                   As Long = &H10    ' Business Edition
  200.   Private Const PRODUCT_WEB_SERVER                   As Long = &H11    ' Web Server Edition (full installation)
  201.   Private Const PRODUCT_CLUSTER_SERVER               As Long = &H12    ' Cluster Server Edition
  202.   Private Const PRODUCT_HOME_SERVER                  As Long = &H13    ' Home Server Edition
  203.   Private Const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM As Long = &H19    ' Small Business Server Premium Edition
  204.   Private Const PRODUCT_HOME_PREMIUM_N               As Long = &H1A    ' Home Premium Edition
  205.   Private Const PRODUCT_ENTERPRISE_N                 As Long = &H1B    ' Enterprise Edition
  206.   Private Const PRODUCT_ULTIMATE_N                   As Long = &H1C    ' Ultimate Edition
  207.    
  208. ' ***************************************************************************
  209. ' Type structures
  210. ' ***************************************************************************
  211.   ' The OSVERSIONINFOEX data structure contains operating system version
  212.   ' information. The information includes major and minor version numbers,
  213.   ' a build number, a platform identifier, and information about product
  214.   ' suites and the latest Service Pack installed on the system. This structure
  215.   ' is used with the GetVersionEx and VerifyVersionInfo functions.
  216.   Private Type OSVERSIONINFOEX
  217.       OSVSize           As Long          ' size of this data structure (in bytes)
  218.       dwVerMajor        As Long          ' ex: 5
  219.       dwVerMinor        As Long          ' ex: 01
  220.       dwBuildNumber     As Long          ' ex: 2600
  221.       PlatformID        As Long          ' Identifies operating system platform
  222.       szCSDVersion      As String * 128  ' ex: "Service Pack 3"
  223.       wServicePackMajor As Integer
  224.       wServicePackMinor As Integer
  225.       wSuiteMask        As Integer
  226.       wProductType      As Byte
  227.       wReserved         As Byte
  228.   End Type
  229.  
  230.   ' The SYSTEM_INFO structure contains information about the current computer
  231.   ' system.  This includes the architecture and type of the processor, the
  232.   ' number of processors in the system, the page size, and other such information.
  233.   Private Type OEM_ID
  234.       wProcessorArchitecture As Integer
  235.       wReserved              As Integer
  236.   End Type
  237.   
  238.   Private Type SYSTEM_INFO
  239.       dwOemID                     As OEM_ID
  240.       dwPageSize                  As Long
  241.       lpMinimumApplicationAddress As Long
  242.       lpMaximumApplicationAddress As Long
  243.       dwActiveProcessorMask       As Long
  244.       dwNumberOfProcessors        As Long
  245.       dwProcessorType             As Long
  246.       dwAllocationGranularity     As Long
  247.       wProcessorLevel             As Integer
  248.       wProcessorRevision          As Integer
  249.   End Type
  250.  
  251.   ' Windows operating system formatted information
  252.   Private Type OS_INFORMATION
  253.       PlatformID   As Long
  254.       VersionName  As String
  255.       VersionNo    As String
  256.       BuildNo      As String
  257.       ServicePack  As String
  258.   End Type
  259.  
  260. ' ***************************************************************************
  261. ' API Declares
  262. ' ***************************************************************************
  263.   ' This function obtains extended information about the version of the
  264.   ' operating system that is currently running.
  265.   Private Declare Function GetSystemMetrics Lib "user32" _
  266.           (ByVal nIndex As Long) As Long
  267.  
  268.   ' This function obtains extended information about the version of the
  269.   ' operating system that is currently running.  If the function succeeds,
  270.   ' the return value is a nonzero value.
  271.   Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
  272.           (LpVersionInformation As Any) As Long
  273.  
  274.   ' The GetProcAddress function returns the address of the specified
  275.   ' exported dynamic-link library (DLL) function. If the function call fails,
  276.   ' the return value is null.
  277.   Private Declare Function GetProcAddress Lib "kernel32" _
  278.           (ByVal hModule As Long, ByVal lpProcName As String) As Long
  279.  
  280.   ' Retrieves a module handle for the specified module. The module must have
  281.   ' been loaded by the calling process.
  282.   Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" _
  283.          (ByVal lpModuleName As String) As Long
  284.   
  285.   ' This function returns information about the current system.
  286.   Private Declare Sub GetSystemInfo Lib "kernel32" _
  287.           (lpSystemInfo As SYSTEM_INFO)
  288.   
  289.   ' Retrieves information about the current system running Windows 2000 Pro or
  290.   ' newer.  It is equivalent to the GetSystemInfo function.
  291.   Private Declare Sub GetNativeSystemInfo Lib "kernel32" _
  292.           (lpSystemInfo As SYSTEM_INFO)
  293.  
  294.   ' Retrieves the product type for the operating system on the local
  295.   ' computer, and maps the type to the product types supported by the
  296.   ' specified operating system.
  297.   Private Declare Function GetProductInfo Lib "kernel32" _
  298.           (ByVal dwOSMajorVersion As Long, ByVal dwOSMinorVersion As Long, _
  299.           ByVal dwSpMajorVersion As Long, ByVal dwSpMinorVersion As Long, _
  300.           pdwReturnedProductType As Long) As Long
  301.  
  302.   ' ZeroMemory is used for clearing the contents of a type structure.
  303.   Private Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" _
  304.           (Destination As Any, ByVal Length As Long)
  305.  
  306. ' ***************************************************************************
  307. ' Module Variables
  308. '
  309. '                    +-------------- Module level designator
  310. '                    |  +----------- Data type (Boolean)
  311. '                    |  |     |----- Variable subname
  312. '                    - --- ---------
  313. ' Naming standard:   m bln WindowsNT
  314. ' Variable name:     mblnWindowsNT
  315. '
  316. ' ***************************************************************************
  317.   Private mtypOSInfo                        As OS_INFORMATION
  318.   Private mtypOSVIEX                        As OSVERSIONINFOEX
  319.   Private mtypSI                            As SYSTEM_INFO
  320.   Private mstrVerName                       As String
  321.   Private mstrSrvPack                       As String
  322.   
  323.   Private mblnWindowsNT                     As Boolean
  324.   Private mblnWinNT4orNewer                 As Boolean
  325.   Private mblnWin2000orNewer                As Boolean
  326.   Private mblnWinXPorNewer                  As Boolean
  327.   Private mblnWinVistaOrNewer               As Boolean
  328.   
  329.   Private mblnWin2000                       As Boolean
  330.   Private mblnWin2000Pro                    As Boolean
  331.   Private mblnWin2000Workstation            As Boolean
  332.   Private mblnWin2000Server                 As Boolean
  333.   Private mblnWin2000DatacenterSvr          As Boolean
  334.   Private mblnWin2000AdvancedSvr            As Boolean
  335.   
  336.   Private mblnWinXP                         As Boolean
  337.   Private mblnWinXPSP2                      As Boolean
  338.   Private mblnWinXPSP3                      As Boolean
  339.   Private mblnWinXPHomeEdition              As Boolean
  340.   Private mblnWinXPPro                      As Boolean
  341.   Private mblnWinXPMediaCenter              As Boolean
  342.   Private mblnWinXPStarter                  As Boolean
  343.   Private mblnWinXPTabletPC                 As Boolean
  344.   Private mblnWinXPEmbedded                 As Boolean
  345.   
  346.   Private mblnWinVista                      As Boolean
  347.   Private mblnWinVistaSP1                   As Boolean
  348.   Private mblnWinVistaHomeBasic             As Boolean
  349.   Private mblnWinVistaHomeEdition           As Boolean
  350.   Private mblnWinVistaHomePremium           As Boolean
  351.   Private mblnWinVistaHomeServer            As Boolean
  352.   Private mblnWinVistaUltimate              As Boolean
  353.   Private mblnWinVistaBusiness              As Boolean
  354.   Private mblnWinVistaEnterprise            As Boolean
  355.   Private mblnWinVistaWorkstation           As Boolean
  356.   Private mblnWinVistaStarter               As Boolean
  357.   Private mblnWindows7                      As Boolean
  358.   
  359.   Private mblnWinServer2003                 As Boolean
  360.   Private mblnWin2003ServerR2               As Boolean
  361.   Private mblnWin2003StorageServer          As Boolean
  362.   Private mblnBladeServer                   As Boolean
  363.   Private mblnWebServer                     As Boolean
  364.   Private mblnWinHomeServer                 As Boolean
  365.   Private mblnClusterServer                 As Boolean
  366.   Private mblnComputeClusterServer          As Boolean
  367.   Private mblnWinServer2008                 As Boolean
  368.   Private mblnWinServer2008R2               As Boolean
  369.   Private mblnDataCenterServer              As Boolean
  370.   Private mblnDataCenterServerCore          As Boolean
  371.   
  372.   Private mblnBackOfficeServer              As Boolean
  373.   Private mblnDomainController              As Boolean
  374.   Private mblnEnterpriseServer              As Boolean
  375.   Private mblnEnterpriseServerCore          As Boolean
  376.   Private mblnTerminalServer                As Boolean
  377.   Private mblnSmallBusinessServer           As Boolean
  378.   Private mblnSmallBusinessServerPremium    As Boolean
  379.   Private mblnSmallBusinessRestrictedServer As Boolean
  380.   Private mblnStandardServer                As Boolean
  381.   Private mblnStandardServerCore            As Boolean
  382.   
  383.   ' 64-Bit Versions
  384.   Private mblnWinVista64                    As Boolean
  385.   Private mblnWinXPPro64                    As Boolean
  386.   Private mblnDataCenterItanium64           As Boolean
  387.   Private mblnEnterpriseItanium64           As Boolean
  388.   Private mblnDataCenter64                  As Boolean
  389.   Private mblnEnterprise64                  As Boolean
  390.   Private mblnStandard64                    As Boolean
  391.   Private mblnComputeServer64               As Boolean
  392.   Private mblnDatacenterServer64            As Boolean
  393.   Private mblnEnterpriseServer64            As Boolean
  394.   Private mblnWebBladeServer64              As Boolean
  395.   Private mblnStandardServer64              As Boolean
  396.   Private mblnOperSystem64                  As Boolean
  397.  
  398.  
  399. ' ***************************************************************************
  400. ' ****                      Properties                                   ****
  401. ' ***************************************************************************
  402.  
  403. Public Property Get VersionName() As String
  404.     VersionName = mtypOSInfo.VersionName
  405. End Property
  406.  
  407. Public Property Get VersionNumber() As String
  408.     VersionNumber = mtypOSInfo.VersionNo
  409. End Property
  410.  
  411. Public Property Get BuildNumber() As String
  412.     BuildNumber = mtypOSInfo.BuildNo
  413. End Property
  414.  
  415. Public Property Get VersionData() As String
  416.  
  417.     With mtypOSInfo
  418.         VersionData = .VersionName & " " & _
  419.                       .VersionNo & "." & _
  420.                       .BuildNo
  421.     End With
  422.     
  423.     If mblnWinNT4orNewer Then
  424.         VersionData = VersionData & " " & ServicePack
  425.     End If
  426.  
  427. End Property
  428.  
  429. Public Property Get ServicePack() As String
  430.     ServicePack = mtypOSInfo.ServicePack
  431. End Property
  432.  
  433. Public Property Get PlatformID() As Long
  434.     PlatformID = mtypOSInfo.PlatformID
  435. End Property
  436.  
  437. Public Property Get bWindowsNT() As Boolean
  438.     bWindowsNT = mblnWindowsNT
  439. End Property
  440.  
  441. Public Property Get bWinNT4orNewer() As Boolean
  442.     bWinNT4orNewer = mblnWinNT4orNewer
  443. End Property
  444.  
  445. Public Property Get bWin2000() As Boolean
  446.     bWin2000 = mblnWin2000
  447. End Property
  448.  
  449. Public Property Get bWin2000Pro() As Boolean
  450.     bWin2000Pro = mblnWin2000Pro
  451. End Property
  452.  
  453. Public Property Get bWin2000Workstation() As Boolean
  454.     bWin2000Workstation = mblnWin2000Workstation
  455. End Property
  456.  
  457. Public Property Get bWin2000Server() As Boolean
  458.     bWin2000Server = mblnWin2000Server
  459. End Property
  460.  
  461. Public Property Get bWin2000DatacenterSvr() As Boolean
  462.     bWin2000DatacenterSvr = mblnWin2000DatacenterSvr
  463. End Property
  464.  
  465. Public Property Get bWin2000AdvancedSvr() As Boolean
  466.     bWin2000AdvancedSvr = mblnWin2000AdvancedSvr
  467. End Property
  468.  
  469. Public Property Get bWin2000orNewer() As Boolean
  470.     bWin2000orNewer = mblnWin2000orNewer
  471. End Property
  472.  
  473. Public Property Get bWinXP() As Boolean
  474.     bWinXP = mblnWinXP
  475. End Property
  476.  
  477. Public Property Get bWinXPSP2() As Boolean
  478.     bWinXPSP2 = mblnWinXPSP2
  479. End Property
  480.  
  481. Public Property Get bWinXPSP3() As Boolean
  482.     bWinXPSP3 = mblnWinXPSP3
  483. End Property
  484.  
  485. Public Property Get bWinXPHomeEdition() As Boolean
  486.     bWinXPHomeEdition = mblnWinXPHomeEdition
  487. End Property
  488.  
  489. Public Property Get bWinXPProfessional() As Boolean
  490.     bWinXPProfessional = mblnWinXPPro
  491. End Property
  492.  
  493. Public Property Get bWinXPMediaCenter() As Boolean
  494.     bWinXPMediaCenter = mblnWinXPMediaCenter
  495. End Property
  496.  
  497. Public Property Get bWinXPStarter() As Boolean
  498.     bWinXPStarter = mblnWinXPStarter
  499. End Property
  500.  
  501. Public Property Get bWinXPTabletPC() As Boolean
  502.     bWinXPTabletPC = mblnWinXPTabletPC
  503. End Property
  504.  
  505. Public Property Get bWinXPEmbedded() As Boolean
  506.     bWinXPEmbedded = mblnWinXPEmbedded
  507. End Property
  508.  
  509. Public Property Get bWinXPorNewer() As Boolean
  510.     bWinXPorNewer = mblnWinXPorNewer
  511. End Property
  512.  
  513. Public Property Get bWindows7() As Boolean
  514.     bWindows7 = mblnWindows7
  515. End Property
  516.  
  517. Public Property Get bWinVistaStarter() As Boolean
  518.     bWinVistaStarter = mblnWinVistaStarter
  519. End Property
  520.  
  521. Public Property Get bWinServer2003() As Boolean
  522.     bWinServer2003 = mblnWinServer2003
  523. End Property
  524.  
  525. Public Property Get bWin2003ServerR2() As Boolean
  526.     bWin2003ServerR2 = mblnWin2003ServerR2
  527. End Property
  528.  
  529. Public Property Get bWin2003StorageServer() As Boolean
  530.     bWin2003StorageServer = mblnWin2003StorageServer
  531. End Property
  532.  
  533. Public Property Get bComputeClusterServer() As Boolean
  534.     bComputeClusterServer = mblnComputeClusterServer
  535. End Property
  536.  
  537. Public Property Get bWinVista() As Boolean
  538.     bWinVista = mblnWinVista
  539. End Property
  540.  
  541. Public Property Get bWinVistaSP1() As Boolean
  542.     bWinVistaSP1 = mblnWinVistaSP1
  543. End Property
  544.  
  545. Public Property Get bWinVistaHomeBasic() As Boolean
  546.     bWinVistaHomeBasic = mblnWinVistaHomeBasic
  547. End Property
  548.  
  549. Public Property Get bWinVistaHomeEdition() As Boolean
  550.     bWinVistaHomeEdition = mblnWinVistaHomeEdition
  551. End Property
  552.  
  553. Public Property Get bWinVistaHomePremium() As Boolean
  554.     bWinVistaHomePremium = mblnWinVistaHomePremium
  555. End Property
  556.  
  557. Public Property Get bWinVistaHomeServer() As Boolean
  558.     bWinVistaHomeServer = mblnWinVistaHomeServer
  559. End Property
  560.  
  561. Public Property Get bWinVistaUltimate() As Boolean
  562.     bWinVistaUltimate = mblnWinVistaUltimate
  563. End Property
  564.  
  565. Public Property Get bWinVistaBusiness() As Boolean
  566.     bWinVistaBusiness = mblnWinVistaBusiness
  567. End Property
  568.  
  569. Public Property Get bWinVistaEnterprise() As Boolean
  570.     bWinVistaEnterprise = mblnWinVistaEnterprise
  571. End Property
  572.  
  573. Public Property Get bWinVistaWorkstation() As Boolean
  574.     bWinVistaWorkstation = mblnWinVistaWorkstation
  575. End Property
  576.  
  577. Public Property Get bWinServer2008() As Boolean
  578.     bWinServer2008 = mblnWinServer2008
  579. End Property
  580.  
  581. Public Property Get bWinServer2008R2() As Boolean
  582.     bWinServer2008R2 = mblnWinServer2008R2
  583. End Property
  584.  
  585. Public Property Get bWinVistaOrNewer() As Boolean
  586.     bWinVistaOrNewer = mblnWinVistaOrNewer
  587. End Property
  588.  
  589. Public Property Get bDataCenterServer() As Boolean
  590.     bDataCenterServer = mblnDataCenterServer
  591. End Property
  592.  
  593. Public Property Get bDataCenterServerCore() As Boolean
  594.     bDataCenterServerCore = mblnDataCenterServerCore
  595. End Property
  596.  
  597. Public Property Get bBackOfficeServer() As Boolean
  598.     bBackOfficeServer = mblnBackOfficeServer
  599. End Property
  600.  
  601. Public Property Get bBladeServer() As Boolean
  602.     bBladeServer = mblnBladeServer
  603. End Property
  604.  
  605. Public Property Get bWebServer() As Boolean
  606.     bWebServer = mblnWebServer
  607. End Property
  608.  
  609. Public Property Get bWinHomeServer() As Boolean
  610.     bWinHomeServer = mblnWinHomeServer
  611. End Property
  612.  
  613. Public Property Get bewer() As Boolean
  614.     bWinXPorNewrMnNdEnd2     bewer() As timate = mblnWinVistaUltimar
  615. End Property
  616.  
  617. Public Prop             h5oVis7Businessnd Property
  618.  
  619. Public Property Get bewer(inHrServe As Boolean
  620.   mbedded
  621. End Propertyf   bWinVooleaoroperty Get bWieiPMrsllean
  622.     bWinHomeServer = mblnWinHo
  623.  
  624. PTm
  625. End Property
  626.  
  627. PuEnd Propertyeaoroperr This              As Boolea
  628. Public Property Get bWinVistaOrNewer() As As Boolean
  629.   c Property Geb          As Bolic Prop         h5oVis7Buay Ginor As Integeeb   cblic Propert2End PistaUltimarcl1nVistaHomeEdition = mblnWinVistaHomeEdition
  630. End Property
  631.  
  632. Public Property Gett bWin20skEic Propert erty
  633.  
  634. Public Property Get bWinVistairEeic Property Get bNoperty Get bWinVista c Property rty oert   bWinServer2008:ServladeServer eIaeNublilneBusienmerCore            taHomeEdition
  635. En*******************lneBusienmer        serty
  636.  
  637. Public Property Get bBladeServeProperty
  638.  
  639. Public Propen8o rw = mblnD****d1
  640.  
  641. Publioolean
  642.     bBladeinalServer      nd PoWinHo
  643.  
  644. Pan
  645.     nWinVistaWorkstation
  646. Enelic Property Get bBladeServe   nnpaVis
  647. Enelic Bladein oolean
  648.    ex: "Sate = mblnWinVistaUltier() As Boolean
  649.   Fperty o"Satpey
  650.  
  651. Public Property Gdty
  652.  
  653. Pud ProUcnd PPPPPPPPPPPPPPP,y o"Satbic Pd Pry
  654.  
  655. Pud ProU ProUcnd PP08R2 = mblnWinServer2008R2
  656. End Property
  657.  
  658. Public
  659. Pud PrPPPPPPPP,y o"Satbic Pd Pry
  660.  
  661. Pud ProU ProUcnd PP08R2 = mv***A      As Booleanty
  662.  
  663. PubliCinVistaUltier() As Boolean
  664.   Fperty o"Satpey
  665. P_
  666. Pu  pdwDt4istaWorkstation
  667. Enelii08R2(on Getusicl2iAs Boolean
  668.   Private      nd PoWinHo
  669.  
  670. Pan
  671.     nWinVistaWorkstation
  672. EGet bBlstation
  673. ERnation
  674. Enelii08R2(on Getusicl2iAs Bperty Gett bWin20skElusterServer
  675. End POrNe3ADinVistaWon
  676. EGet bB
  677.  
  678. PNmi
  679. Enelii08R2(on Getusicl2iAs BpVistaWlcTstaIT5lsiness()DEnelsiPt bProperty
  680.  
  681. Public PrpPOr..irNe3ADinVistaWrope uPP08R2(on Getusoperty
  682.  
  683. PuBua::::sRta        ProUcnd PP08R2 =uso
  684. Publioolean
  685.     bBladeinalServer      nd PoWinHo
  686.  
  687. PanNAs B_licSlea 5 Property
  688.  
  689. o6xxxxoDi08erty
  690. erServeISiexP08kc22CVSlea 5 Property
  691.  
  692. o6xxxxoDisubndeServerwNnterServer
  693. End Property
  694.  
  695. Public ProperMoxmy o"Satbic Pd Pry
  696.  
  697. PoDi08erty
  698. e  bBladeinalServer      nd PoWinHo
  699.  
  700. PanNAs B_
  701. PoDi08eemy o"Sb       xmy o"Ssicligi3rServe3fsOCtion
  702. End Property
  703.  
  704. PanNAsnd PS PoW
  705.  
  706. PuBua:sfba  As BooleaAAAA3fsO
  707. EnnNA  nd PoWinHo
  708.  
  709. Pan
  710.     nWinVist
  711.  
  712. ry
  713.  
  714. PoDi08erty2a:sfba  As BooleaAAAA3fsO
  715. EnnNA  nd PoWa  As BooleaAAAA3fsO
  716. EnnNA  nd PoWinHo
  717.  
  718. Pan
  719.     nWinVist
  720.  
  721. ry
  722.  
  723. PoDi e kewer    ss BoDn
  724.  
  725. Public
  726. Pud PrPPPPPPPP,yRy
  727.  
  728. PoDi e kewer    ss BoDn
  729.  
  730. Publicivate Co
  731.   1 BoDn
  732. Public PropS
  733. perty EORyo
  734.  
  735. PalnWii08erty2a:sfba  As BoomblnWinNT4or5555555Ow aring the c
  736. PoDi eDaOcklatfoomblnWinNT4or5555555Ow ariblnEnterprisaicSl 4or opertU/tVWin2Na:s(As BoomblnWinNT4or5555555Ow aring the c
  737. PoDi eDaOcklaise64         o:,otatio
  738. Public
  739. Pud DaOcklaise64  
  740. e  bBltrAs BoomblnWinNT4or5555555Ow ary.com
  741. '          ed PoWinHo
  742. reDaOtR/inVi-Ene uPP0BowPise6   bn
  743.     nWinVistaWorkstation
  744. EGet bBlstation
  745. ERnation
  746. Enelii08R2(on Getusicl2iAs Bperty Gett bWin2Boom        As Lonedded = mblnWinXPE:,otatio
  747. Public
  748. Pud DaOcklaise64  
  749. e a3in2Bd bBladeinalServer      nd PoWinHo
  750. ***********************7 mbl08R2 =uso
  751. Publioo cklati3rSellnEAd DaOck******************aringrveWinHte mblnWebBladeSe****0Eterpriser******aringrveWinHte-Al08R Boolean
  752. () Asck********l2iAs BpVistaWlcTstaIT5lsiness()DEnelsiPt bPropernbl08R2 =uso
  753. Publioo c ation As Any) As Long
  754.  
  755.   ' The GetProcAddress function returnn2itaCenterServerCore() As Boolean
  756.     bDataCentDn
  757.  
  758. Public
  759. Pud PeitaCenterSD*****************
  760. ' ****        aCenterSD***rty Get bWin20    unction return  D.E  bDatk********l2iAs BpVertyblnWinHomeServer
  761. End Prob@ivate mblnSm2I8R2 =uso
  762. Publioo
  763. Publioo
  764. P5AOSi operno
  765. **uSm2I8R blioo
  766. Publioo
  767. P5AOSi operno
  768. blnWinc permsgd2Bd bB4*
  769. ' ****        aCe  Action. If the function ca  A If i*uSm2I
  770. End Prroperty Get LEnd Prroperty Get LEnAction. If the fubnd PrrnWinHo
  771.  
  772. Pan
  773.     nWinVistacrty Get LEnAction. If throperty
  774.     nWinVistac As Boolea************** nlnDataCenterItanium64           As Boolean
  775.   Pri2lic PropS
  776. perty EORyo
  777.  
  778. PalnWii0P          As Boolean
  779.   Pri2lic PrGet LEnAction. If thBlsLoNdoty
  780.  
  781. Public P
  782. Pud DaOcklaR6                mHo
  783. ****bDatk********aOckkCenterServer npS
  784. lea
  785. Pu        permTstaIT5loWinHo
  786.  
  787. Pan
  788.     nWinVist
  789.  
  790. ry
  791.  
  792. PoDi08erty2nBackOfficeSec.f i*uSrItanium64           As Boolean
  793.   Pri2lic PropS
  794. pring the c
  795. PoDi eniumnalSebemDt6         atk****osS
  796. pring lic P56e
  797.  
  798. . ProbFfM>RC3
  799. End PropervvtaCFaeW
  800. PnVihnNT4or55s5ropS
  801.  
  802. pring the c
  803. PoDi eniumnj(NWc P56e      ***aringrveWinHte-Al.hTS6         atk****osS
  804. pring lic PclatfoSInfo.PlatformID
  805. End ProeuP1
  806. End PropertylOlatfoSInfo.PlatfoDi CenterServere
  807. End Property
  808.  
  809. Public Property Ge:ETrPud PrPPPPPPPP,yRyer   1
  810. End PropeY>c(n Property Ge:ETrPk****AAs P,yeY>c(n Prop   atk**ic Property G unction r2WinServer2008RProb@ivate t5**ic Property G unction r2WinServe
  811. EpRfoeAs P,yeY>c(n Prop   atk**ic Property G unction r2WinServerc(n Prop   atk**ic Property G unction r2WinServerc(n Prop t Prop   atk**ic Propatfc unctty2niumnj(NWc P56e  PrRleaAAAAberverc(n Prop   aN*
  812. ' ****************************************6oultk**ic PropayEmaNerty Gett bWin20skS iPudrng late t5**ic PropertfoDi CenterServere
  813. End Prop2En = mblnWinVistaHomeEd bWinXPorNewrMnNdEnd2     bewer() As timate = mblnWinVistaUltimar
  814. End Property
  815. diRNA  nd PoWa  As Longop   atcSSB   cNA  nd PoU P,yeY>c(n Prop lic Propef0***R i As Boombln8
  816.  
  817. PublicgandardServerlic PclatfoSInfo.PlatformIDPPP,y ervetfyI-PVist     bewer() As timate = mblnWinVistaUltimar
  818. EninVistaUltimar
  819. EninVistaUltimarsc***PropSerpmarS   cmar
  820. EninVistaUltimar
  821. pring Ultimarsc***PristaUlMosS
  822. BoomblnWinNT4or5osS
  823. BoomblnWicPristaUlnSeaUlMcT4or5osS
  824. BoomblnWic"oo.Pl**ic Property G unction r        permTstSet bWinXPHomeEditionaUlg UltimoeAs P,yeY>c(n PrBoomblnWinNT4or5oAatfc unctty2niumnj(NWc 56e      ***aringl mv**************** nlnDataCenterItanium64    s3 s3 s3 s3 s3 s3 s3blnWinVistaHomeServer
  825. End Property
  826. toDi e kewer    ss U3lean
  827.     bWnd ProperDataCenterItanNtformID = mtypOSInfo.PlatformID
  828. End atalled
  829.   Private Const VER_SUITE_EMBEDDEr
  830. **** nlnDaatforerDataCe**** erty
  831.  
  832. PrtfoinVistc, t
  833. ***IDDEr
  834. **** nlnDaatforerDataCe**** erty
  835.  
  836. PrtfoinVistcbuMDDEs timate = mblnWinViIaCe**** erty
  837.  
  838. PrtfoinVie4lnWinViIaCe**** erty
  839.  
  840. PrtfoinVie4lnWinViIaCe***ic Property G unction r2WinSelEr
  841. **** nlnDaatforerDataCe**** erty
  842.  
  843. PrSGet rDnEr
  844. **** n   ********6B"oert  n n   ****************************Yrop_PdNo
  845. End Propertyf8g
  846.  
  847. P.9***6*****EEEEM
  848. PrtfoinVie4lnWinViIaCeet a***- rPrSGet rDnEIaCeet a***- rV**** e***PropSerpmarS   t bB
  849. PEeiiiiiii2P dS..9***6**c pety oert   bWinServer2008:ServladeServer eItoDi e kewer    ss U3lean
  850.     bWnd Prop0e
  851. End Property
  852.  
  853. Public Property Ge:ETrPud PrPPPPPPPP,yRyer   1
  854. End Pro Bool      blnck   p2P dS..9*roperty GenVie4lnWinViIaCe***ic Property G unc p2P dd Propervvtnc
  855. PoDPPPP,yRyer   1
  856. aOckL4blico t bB
  857. PEeiiiiiii2P Ag bB
  858. PEeiiiWorkoperv(Re Ge:ETrPud PrPPPa)**6B"o Geta ***aringl mv***i e kewCroEropervvts
  859. End PrETrPud lbWiiiiPublNeweing the c
  860. WinVtfoinVistc, t
  861. ***IDDEr
  862. *4nterServerCoy Ge:ETrPmL**A vtso GeopervvtDMop6***************************6oultke** erty
  863.  
  864. PrtfoinVn3ropervvtaCFaeW
  865. PnVihnNT4or55s5ropS
  866.  
  867. pring the n      As Stringgistc, t
  868. ***IDDEr
  869. *4nter:3e kewertion/vetf
  870. Public nWinVistaUlItanium64           As BooSc(n          ertyoperty .nteoperty GenVie4t, (SM Private Const VER_SUIie4lNOeaGetver eItoDaatforepItanium64   c nrtyer Ed atalled
  871.   P-e
  872.  
  873.   ' This function obic Property GorepItanium64   c nrtyata
  874.  
  875. PiVOOOOTH****T4or55s5ropS     ium64 MertneropS
  876.  
  877. pring the n      2pS
  878.  
  879. prin  c nrtyata
  880.  
  881. PiV2rnter:3e kewertionNlean
  882.  roper    2pSXPMeft a***- rV**** e***As Boype to the product types supported by the
  883.   '() As Boolean
  884.     bBladcSl Ed aeW
  885. PnVihnNT4or55s5ropS
  886.  
  887. prtUITcgMop6niul Ed aeW
  888. PnVihnNTIperty= mblnWinServer2008
  889. End PropleRTIperng late t5*RnNTIperty= mblnWinblivB(
  890. End    m**As Boype to the aaelItS oert   bWinServer2008s   (ByVrepItanium6erty GorItS oert   bWinSe+**ic Property G unction r2WinServe
  891. EpRfoeAs WinServertcgMop6niul Ed alg laon r2WinSe5555Ow ary.com
  892. VistaU 8R2 = mvplea
  893. PuvaGet
  894. Prtfoin= mblnWind POrNe3Ahsver eItoDaatforepItani>SInfo.PlatformID
  895. End ProeuP1
  896. End PropertylOblnWi6z2 = mvplea
  897. PuvaGet
  898. Ml
  899. Prtfoiry.com** nlnDaatforerDataCe**** erty
  900.  
  901. Prn_aet
  902. Ml
  903. PrtfoirSAhsver eItlnDaatforerDataC/a9Vn3ropeMerty= mblnWinblivB(
  904. End    m**As Bo5m64   c 2003SerbemDtMl
  905. Pr/+wopertylOblnW   m**As Bo5m64   c 200   c nrtyervaGet
  906. Prmar
  907. EninVistarg ***arintion  foet bB5e(nty
  908.  
  909. PrtfoinVie4rtylOblnW   m**As Bo5m64   c 200   c nrtyerSyerv_iVOOOOTH****T4Id)neropS
  910.  
  911. pringIArlI
  912.     bWinV
  913. **** nlnDaatforepIDrrtylOblnW   m**As Bo5m64   c 20  1 BoDn
  914. Public PropS
  915. pertyfore64 Id)ipert2End PistaUltiNT4or554   c 20  1 BoDn
  916. .Enterprise
  917. End PrVist
  918.  
  919. ry
  920.  
  921. PoDi08erty2a:sfba  As BooleaAAAA3fsO
  922. EnnUltiNT4or554   c 20  1 Bblic Property Get ladeServer eItoDi e kepeca c PropTWinViIaCe***ty Get ladeServer eItod r2WinSe5555Ow  lat2End err Ed atac6RdServer eItoDi e kepeca c ProinViRKu timate = mblnWinnthe product t**ID_MSItyervNln ProinViRpee
  923. End PrVist
  924.  
  925. ry
  926.  
  927. PoElt bB5e(nttttnnertion/vetf
  928. Public /vetf
  929. Public /vetf
  930. Pubr2WinSe5WinSe5WinSe5WinSe5WinSe5WinSe5WinSe5WinSe5WinSe5      As Boolean
  931.   Pri2lic NeServezUltimate
  932. VistaUltimar
  933. EninVist
  934.   PnViDCeet a***- rV**** e*PPPPONINFOEX data structure contateroperty
  935.  
  936. Public Property Get bWin2000AdvancedSvriIaCe***ty  Prop lIBladcSl Ed aeW
  937. PnVihnNT4or55crveWvu*- rV**** e***PropSebe aeW
  938. PnAdvancedSvriIa7Cdt(Jn NeServezUlNeweidlObnVihnNTN*ilIBladcSV****GI
  939. PnVihnNT4or55crveWvWin2SK4nbe aeW
  940. PnAdvancedIvan***T4Id)mdU_rWinViIaCe***ty Get lOsan r  2r = mblnWin200_ pr*ilIBladcSV** a_ewertion/NT4or55crveWvWin2Szn200_ pr*ilIBladcSV** a_ey Geet lOsan r  2r = mblnWin200_N pr*ilIBe aeimaidvancedkepeca c Proiy
  941. wertlan*ESfoinViR_SUITE_EMBEDDEr
  942. *OebBl2 nVis8pr*ilIBate()werate
  943. VistacCdstructure contateroperty
  944.  
  945. Public Propervancedkepeca c E 5soinVi
  946. o6xxebBl2 nVis8p.mEn20tdfoirSAhsver eItlnDaatforerDataC/a9Vn3roiy
  947. wertlanPEever eItl
  948. Publicl Bblic Property Get ladepTrPk* sO
  949. EnnUltiNT4oerty GE_EMNW
  950. PdrEr55crveWvWin2S
  951. Pud PrPk* sO
  952. ever eSDProperty Get nDaatfsdowsNT
  953. '
  954. ' ***************Se5WinSe5   SoiWinSe5WinSe5WPud PrJn NeServezUila of the specified
  955.   ' exported dynamic-link library (DLss BEd aeW
  956. PnVihnNT4or55s5ropS
  957.  
  958. prtUITcgMop6niul ErbBl2 
  959.  
  960. . ProbFfM>RC3
  961. End PropervvtaCFaeW
  962. Pn(crveWvuWinSe5   SoiWinSuWinSe5   SoiWinSuWinSe5   SoiWinSuWinSe5 TpMrV**en      2gtP Ultid Property
  963.  
  964. PubSkTe5   SoiWinSuWinSe5T4or55id Prty
  965.  
  966. PubSkTe5  y rITcgMop6niul ErbBl2 
  967. MrV**elid r2WinDaaP5AOrbBl2 
  968. MrV**elid r2tRC3
  969. End PropervvtaCFaeW
  970. Pn(crve_aeDBgMop6niul ErbBl2 
  971. MrV**elide  As Boolean
  972.   Private mblnClusterServer         licl Bblic Property gMop6niul E* a_ey Geet WinSe5WinSe5      As 3roiy
  973. wertlanPEever eItl
  974. Publicl Bblic PropertddvancedwwertlwertlanPEever eItlicl Bblic PropertdDtD********Se5Wt WinSe5WinSe5 dNA  nd PoWa  As BoItl***Se5Wt WinSeDtD********Se"perverc(n Prop WmblnWin200_N pr*ilIBe aeimaidvancedkepeca c ProiNA  nd PoWa  As Bs BoItl***Se5Wt Mop6niul Er **Se"ProiNA  nd PoWa  Ae****Starter() As Boolean
  975. dr *vr() As Boolean
  976. dr *vr() As Boolean lnDatacenterServer64            As e
  977. End Property
  978.  
  979. NefoDi CenterServere a PrnueW
  980. Pn(crve_aeW
  981. EscwOXllnWin200_N pr*ilIBIEaeW
  982. EscwOXllnWin200_N pr*ilIBIProinSeDtD********Se"perverc(n /_N pr*ilIBIPrVjorV55s5ropS
  983.  
  984. prtUITcgMop6niul Ed aeW
  985. PnVihnNTIperty= mblnWinServer2008
  986. End Pip6niul Ed aeW
  987. PnVihnNTIperty= mblnWin
  988. EscwOXllnWin200_N pr*ilIBIEaeW
  989. EscwOXllnWin200_N unVihnNTIperty= mblnWi80  As e
  990. End Property7i aeW
  991. forerDn8to the 02aely= mvate CeWilIBle Property
  992.  
  993. mvate CeWilIBle Property
  994.  
  995. mvate CeWilIBle Property
  996.  
  997.  
  998. risdeerty
  999.  
  1000. mvate CeWilIBle Property
  1001.  
  1002.  
  1003. risdeerty
  1004.  
  1005. mvatlIBle Prop   aNBle lnWiSeaUWvu*- rV****y
  1006.  
  1007.  
  1008. ric, t
  1009. ***IDDEr
  1010. *4f5T4or55SiPa_aeDBeh
  1011.  
  1012. mvatlIBT5lsiness()DEnesAr ty2 TcgMop6niul Ep6niul Ep6niul Ep6niul ErD
  1013. Ese CeWilIBlnWinoDi8rop   aNBle lnWi4or5Wi4ol TcgMess()DEnesAr ty2 TcgMop6niul Ep6niul Ep6niul Erver CeWilIBlnWinoDi8rop   aNBle lWi4or5Wi4ol TcmlsinaZmblgy Ae****Starter() e
  1014. End Property7i aeWMr tye s3 s3 starg ***arintion gy Ae**tlnW
  1015. P.9***6***A"an lnDatacenterServer64            As e
  1016. End Pa3in2Bd bBlar() e
  1017. End Property7i aeWMilIBIPrVjorV55s5rvereCrerDatam5Mile Bblic P'TIperty= mbrVjooultkSperDataCeerty= mbaroi3TD2rP'TIperty= mbrVjooultkSy7i aeWMlarNerty= mb :***arintioeY>c(n PrBoomblnWinNT4or5oAatfc uncd..9*roplvtmicG* ertytfc unrVjooultkSy7i aeWMlarNerty= mb :***arintioeY>c(t=osaNPoWa  Ae****StYtop6niul ErbBlvr()8nrSer= mN :*PltkSy7i aeWMlarNerty= mb :***arEetS
  1018. Es vtmle Bblic P'TIpertyPoWa  Ae****StYtop6niul ErbBlvr()8nrSer= mN :*PltkSM
  1019. 1Ser= mW
  1020. P.9***6***A"anoBa5Wi4or5Wi4ol TcmlsinaZmblgy Ae****Stsul ErbBltion gy Ae**tlnW
  1021. P.9*e tle lWi4or5Wi4ty
  1022.  
  1023. Prtfoiarintioea_a4or5Wi4ol Tcmlsi***Se"pervntio TcmlsinaZmblgy Ae****Stsul ErbBltion gy Ae**tlnW
  1024. PlcPa3in2Bd bBlar() 2P.9***6***A"aetmeServer
  1025. SBle Property
  1026.  
  1027.  
  1028. r Ne-acenterServer64            As e
  1029. End Propertyvuv.***6***A"aetmeServBf9*roplvtmicG* ertytfc unrAanOey
  1030. ity gMop6niul E* a_ey Gc P'TPcrivate mblnClusterServer         licl Bblic(aDvate mblnClusterSerbS lT-3in2  ndca c ProiyM  P'TPcria.blgy Ae*CT-3in2  ndca c ProiyM      As Boolean
  1031.       licl Bbl5Wi4oTltmeServBf9operty
  1032.  
  1033. o6xxxxoDetgy Ae**tlnWinNT ise64        blgyrervBf9otionaUlg UltimoeAsa Bbl5Wi4oTltmeServBf9ohgMop6niul Ep6niul Ep6niul Ervef9otionartyChSe5Wt Mop6niul Er ir
  1034. P.9***6***A"an lnDatacenterServer64             bWtyChSe5Wt Mop6niud Pa3in2Bd bBlar() 2P.9***6***A"aetmeServer
  1035. SBle Property_**A"       liBMop6niud Pa3in2Bd bBlar() 2P.9***6***A"aetmeSegM_**A"     Bd bBlar() 2P.9***6***A"aetmeServer
  1036. 3
  1037. dServer2008
  1038. End Pip6niul Ed aeW
  1039. PnVihn*A"aionaUlgd bBlaErvleroperty
  1040.  
  1041. Public Property Get bWin2000Advroperty"  ioperty
  1042.  
  1043. Public P
  1044. PnVihn*WtforerDataCeGet bPltkSM
  1045. 1Ser= mW
  1046. P.9*wi.ef9otionar tle lWi4or5Wiiiiean)
  1047. '      E2x1Ser= mW
  1048. P.9*wi.ef9otioeeWM*A"  aanoiDaUlgeMerDtyay***6*9***fn    _9d8le ln)
  1049. '      E2x1Ser= mW
  1050. P.9*wi.ef9oSer= mN :*Poi08erty2a:sfba  As Boom
  1051. PnVihnNtmW
  1052. P..XlloElSs Boolean
  1053. Stsul ErbBltion gy  Private mblnClusterServer   e)s lnClustea cgMop6niul Ed aeW
  1054. PnVihnNTIperty= mblnWinSe2 ln Boolean
  1055. Stsul ErbBltion gy  Privateuh&st
  1056.  
  1057. r.rean
  1058. Stsul ErbBltionvbgp6niul E******* nlnDataCean
  1059. Stsul ErbBltionc9Td b E******* ubS l Ed aeW
  1060. l ErbBltoBd bBla0Advroperty"  ioperty
  1061.  
  1062. Pub Boom
  1063. PvatfordnterSe** nlnDataCeaaaarSet lOsan r  2rt pOy
  1064. s                                        Cermsul ErbBlter
  1065. SBle Property_DM  t2008
  1066. Enrty Gen N 6niul Er ir
  1067. P.9***6*i  nd PoWa  Ae****Starter() Asst VER_*6*i  nd PoWa  Ae****Starter() gy  Prin4lic TtarBoolean
  1068. Stsul ErbBltion  nd PoWa  Ae*.My
  1069. iWa  Ae*  Ae****Starter() Asst VER_*6*i  nd taCeon  nsst VER_*6*i  nd taCeT() 2P.9***6***A"aetmeServer
  1070. 3
  1071. dServtP56e  y
  1072. iWa   meServer
  1073. 3
  1074. dSerar = mblnWipS
  1075.  
  1076. prtUITcgMop6n unT() 2P.9***6***A"aetmeServer
  1077. 3
  1078. dServpcpvtP() Asst VER_*6*i  nd PoWa  Ae****Stateuh&st
  1079.  
  1080. r.rean
  1081. Stsul ErbBltionvbgp6niul E******* nlnDataCean
  1082. Stsul ErbBltionc9Td9t2008
  1083. Enrty Gen N 6niulne  y
  1084. iWa   meSBltionc9Td b E*****tEnrty Gen NiulrServer
  1085. 3oElSs aCeT() 2P. b E* aCean
  1086. i08
  1087. Enrty Gen N 6npen N 6npen N 6npeUIT kepeca c ProinViRKu timate = mblnWinnthe product t**ID_MSItyervNln ProinViRpee
  1088. End PrViope mb1rbBltoBultion yn
  1089.   Pri2lic PropS
  1090. pe*T4or5e = mb **ID_MSatfordntetrDetgy Ae**tlnWc9Td b E*****k
  1091. End PrViope mb1rbBltoBultiovandlAe****StYtop6niul ErS6 etrr2Wy2aMSatforl ErbBlvr()8nrSer= minNT4or5oA< etrr2Wy2aMSatfoorl Ety Get bDataCenlZmblgy Ae****Stsul ErbBle  y
  1092. iWa   meSBlti bDaSvere foorlMgy roinVii bDaSvere foorlMgy rLitr    b E Get bDataCenlZmblPere foorlMgy roinVii bsby roinVii bDaSvere foov bDaSvere foo*******************r5oA< etrr2Wy2aMSC*******************r5oASIelSs l ***9otioeeWM*****r5oASIelSs l *e5WinSeIS   meRltion ynr5oASIelSs l *e5WinSeIS   meRltioniS re foorlMgy rLitr    b E Get bDataCenlZmblPere foo) Asst spttaCcC l   foorlMgb E Get bDataCenlZmblPere foo) Asst sptt CblPere foo) Asst spttaCcC l oor    ecC l   foorlMgb E Get bDataCenlZmblPere     m**As Boype to thtUITcgMop6n unT() 2P.9***6Pere   TBladcSl Ed aeW
  1093. PnVihnNT4or55crveWvu*- rV**** e***Prop r2WinSe5555Ow Ep66A.kte = inVie4lnWinViIaCe*AaeW
  1094.  ' aCel_= incnPg) rV****NEd aeBlarter() e
  1095. m
  1096.  
  1097. Pw Ep66A.kte = inVie4lnWinViIaCe*3fV rLitr    b EVie4lnWibcture contateroperty
  1098. lnWi***6P
  1099. mvatlIBTEeveEd a_elSs l *e5WinSeISc2Ie = 8erLitr    STlideAnd b0e sLss BEd aeW
  1100. Pnul Er ir
  1101. PGrinVii Y t85crveW-2d b E*****k
  1102. End e
  1103. m
  1104.  
  1105. Pw Ep66 BEd aeW
  1106. PMSatfoorl Ety A DAOet VersionNumber() As String
  1107.     VersionNumber formIDPPPnVied b2er() As String
  1108.     Vers() As String
  1109.     VersionNumber formIDPPPnVieduSr    b EVie4lnWibcture contateroperty
  1110. lnWi***6P
  1111. mvatlIBTEeveEd a_elSs l *e5WinSeISc2Ie =1operty
  1112. .rkPEeiiiiiii2Pm
  1113. Puoperty
  1114. lnbllrS   cmar
  1115. EninVistaUltrsionNumber formIDPPPnVie_TPPnVie_TPPnVie_TP*e5Wbcture dmblnWinNT4or5oAatfc uncd..9*roplvtmicdTP*e5e5WbctultrsionNumbe****StYtop6ni0t**ID_MSIty*i  nd PoWa  Ae****StiEd aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeei
  1116. Pse = mblneMhsver ***Se2Ma8ver ***Sens8duncd.@_9dePubr kewertiy= eeeeeeeeeeeeeeeet bDataCe t2008
  1117. Enrty Gen N 6niul Er ir
  1118. P.9***y*i  nd PoWauhd PoWauhd PoWauhd PoWauhd*A"aperty
  1119. lnWi***6P
  1120. mvrty
  1121. lnWi***6P
  1122. mvtCe tCenlty
  1123. uhd*Aeeeeeeeeeeee ic Propevn t20sver ***Se2Ma8ver ****6P
  1124. mvt>ulnWi***6P
  1125. mvrty
  1126. *6Pi***6PePubr kewerVie4lnWinViIa&*Aeemvt>ulnWmvt>hd*Aeeeeeeeeeeooooooonc9Td9t2008
  1127. Enrty Gen N 6niulne  y
  1128. iWa    bWinXPorNewrMnNdEnd2  inXPorNewrMrS   cmar
  1129. EninVistaUonNumbeSV9t2008
  1130. Enrty Gen N 6niulntpcmar
  1131. EninVissn Gen .efeeeoooooe200aperty
  1132. lnWi***6P
  1133. mCy
  1134. inVistaBIPrVjorV55s5Beeeeeeoooot200n
  1135. mvtCe t eRe Ge:ETrP inVi onNumbe****StYtop6ni0t**ID_Saer
  1136. 3
  1137. dServtP56e  y
  1138. iWa   meServer
  1139. 3
  1140. dSerar = mblnWipS
  1141.  
  1142. prtUITcgMop6n unT() 2CinVistaBIPrVjorV55s5Beeeeeeoi***6PePubr kewBoype to tgot200n
  1143. m3> Ae**tlnyirTBoypPistaUlii2Pm
  1144. Puop2sro Er ir
  1145. P.9* nrVjooultkSy 
  1146. dServtP56e  y
  1147. iWa oea_a4*e5e5WbctultrsionNumbe****.si***Se"pe0skEic PVjooultkSy7i avtCt **ei***Se"oootc Ay Ge)irCoultkSy7i avtCt *eh ErbBltion gyaah:pAs l *e5WinSeISTwy2aMSatforl ErbBlvr()8nrSer=  uy7i avtCt *eh ErbBltion gyaah:pAs l *e5WinSeISTwy2aMSatforl ErbBlvr()8nrSer=  umoDi eniumnj(NWc P56e      ***aringrveWinHte-Al.hTS6   bcture contateroperty
  1148. lnWi***6dtatMtpppppppppppppppppppp5555Ow ary.com
  1149. VistaU 8R2 = mvplea
  1150. PuvaGet
  1151. PrtfoimntddvancedwwertlwertlanPEever eItlicl Bblic PropertdDtxl Bblic PropertdDtxl Bblic PPPPPPPPPPPPPPPe  y
  1152. itdDtxl Brar = mblnWipS
  1153.  
  1154. prtUITcgR0aperty
  1155. lnWi***6PRe Ge:ETrPud PrPPPa)**6B"o t eRe Ge:ETrP inVTeV55s5Beeeeeeoi***6PePubr kewBoype to tedigMop6niul EE*****k
  1156. End PrViope mb1rbBltoBultiovandlAe****StYtSlea 5 Property
  1157.  
  1158. o6xxxxoDi08erte-   bctures() As S tedigMop6niul EE*****k
  1159. End PrViope mb1rbBltoBultiovanbdnWinViIa.uresrlMgvatlIBle Prop   aNBrViope mb1rbBltoBultiova:pAs l *e5WinSingrveWinHte-Al.hTS6 e****StYtop .ure s.9*wi.ef9otiona *e5WieAE Ervef9otionartyChSe5Wt MAN G unc p2P dd Prope PrVioCenlZmblPere fc_f9ot PoWauhd PoWauhd PoWauhd PoWauhd*A"aperty
  1160. lnWiV****y
  1161.  
  1162.  
  1163. rik
  1164.  
  1165. ric, t
  1166. ***IDDEr
  1167. *4f5Sy 
  1168. dSeref9otionart
  1169. PriwwWauhd PoWauhd PoWauhd P,auhd DMop6*************auhd PoWauhd PoWauhd P,auhd DMoP,aerty
  1170. lnbllrS   cmar
  1171. Eness function re P,auhd vt sEpty
  1172. l1-fXrty
  1173. lnPPPPPe- y
  1174.  
  1175.  
  1176. rik
  1177. pe PrVioCenlZDauhd P,auhp24i_oP,aerty
  1178. lnbllrS   cmar
  1179. D2P dd P :*PltkSM
  1180. 1Ser= mWONEptyLss BE rSSer=   0pyrIperty=epTWinV1isty
  1181.  
  1182. Public Property Get bWin2000Advroperty"  ioperty
  1183. 2oo() 2P.9***6Pere   hy Get bEptyLss BE rSSer=   0pyiul EE*****k taBIPrVjorV55s5Beee 0pyiul iiiii2Pm
  1184. Puopepyiul iiiii2Pef9otiona *() 2P.9-p6nioWauhdf9otiTa9eLss BE rSSer=   0pyiul EE****s5Beee 0pyiul iiii suc7uve9TdPPPPPPPPPPPPPPPPFN   STcb centerServaBIPrVjorV55s5Beeiul ii6Wi4olrVjorV55s5Beeiul vopertedeie9TdPPPPPPPPPiD6ptyLss E*****tEnrty Gen NiulrServBle lWi4or5Wi4ol TSerar =Lss E*****tEnrty Gen NiulrServBle l oductVyss EAdvroperty"  ioperty
  1185.  
  1186. Pub Boom
  1187. PvatfordnterSe*Rd9t200ivB(
  1188. EnbrtP56e  y9nrty G0sdeeeCrtfoieCy
  1189. inViVveWvu*- rV**** e***Prop r2WinSeeeeooOvatfs'   rbB200ivx kSCenlZmblPere lrtyl TS i_oP,aerty
  1190. l6eeCrt
  1191. Stsulf8 e***Prop r2WinSeeeeoos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*Prdos*P