VDF-GUIdance logo



  Visual DataFlex Logo
  

Shared knowledge leads to accumulated knowledge

        Printer Friendly Page


Size: 42 KB Download
Date Created: 05/10/2010
Date Updated: 05/10/2010
Author: Wil van Antwerpen
Company: Antwise Solutions
Summary:
This package helps you with detecting the version information of the windows operating system your application is running under.

OS Version Info


by Wil van Antwerpen

What it does


The package in the enclosed example workspace queries the operating system and tries to retrieve a number of properties about this.

This package is based on the regcheck package from http://www.vdf-guidance.com
The OS detection logic has been extracted from there and put in here. It has been completely rewritten in a way that makes it more versatile and easier to use.

The property peOSVersion should be used if you want to run code that depends on a specific OS version.


Current Limitations, the code does not check for Hyper-V roles or if windows is licensed, or if the Vista Version used is Ultimate or Professional. For that we will need to use the GetProductInfo WinAPI
call. (Vista and up) Knowing the OS version is Vista is OK for now.

The code has been tested to work on VDF15+

Special thanks to Mertech Data for allowing me to share this code with the community.

Supported Operating Systems



The following operating systems can be detected using this code:
  • Windows 95
  • Windows 98
  • Windows ME
  • Windows NT 3.51
  • Windows NT40 Professional
  • Windows NT40 Server
  • Windows 2000 Professional
  • Windows 2000 Server
  • Windows XP Professional
  • Windows XP
  • Windows XP Professional x64 Edition
  • Windows Server 2003
  • Windows Server 2003 R2
  • Windows Vista
  • Windows Home Server
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows 7
You can also get edition info such as, Home, Tablet, Starter, Multimedia Center, Embedded, Datacenter, enterprise, web edition... etcetera..

Properties



Property String psCSDVersion               ''                               

Windows NT and up: Contains a string, such as "Service Pack 3", that indicates the latest Service Pack installed on the system. If no Service Pack has been installed, the string is empty.
Windows 95: Contains a null-terminated string that provides arbitrary additional information about the operating system.
Property Integer piServicePackMajor        0                                    

Identifies the major version number of the latest Service Pack installed on the system. For example, for Service Pack 3, the major version number is 3. If no Service Pack has been installed, the value is zero.
Property String  psSuite                   ""

The psSuite string only contains features which can be enabled or not, so it is NOT a direct mapping to piSuiteMask. An example of this is if you are in a remote desktop session or not, or if you have administrative privileges.
Property String  psEdition                 ""                                         

The Edition string contains specific details about the platform that cannot be enabled as a role. So "Home" Edition or "Datacenter" edition are good examples. R2 is a peOSVersion
Property String  psOSVersion               CS_OSVERSION_UNKNOWN                             

Contains which version of windows is running as a text. If it can not sort it out it will be CS_OSVERSION_UNKNOWN (="Windows Version UNKNOWN")
Property Integer peOSVersion               CE_OSVERSION_UNKNOWN                             

peOSVersion must be one of the following values:
  • CE_OSVERSION_UNKNOWN
  • CE_OSVERSION_WIN95
  • CE_OSVERSION_WIN98
  • CE_OSVERSION_WINME
  • CE_OSVERSION_NT35
  • CE_OSVERSION_NT4WKS
  • CE_OSVERSION_NT4SRV
  • CE_OSVERSION_W2K
  • CE_OSVERSION_W2KSRV
  • CE_OSVERSION_WXP
  • CE_OSVERSION_2K3
  • CE_OSVERSION_2K3R2
  • CE_OSVERSION_VISTA
  • CE_OSVERSION_HMESRV
  • CE_OSVERSION_2K8
  • CE_OSVERSION_2K8R2
  • CE_OSVERSION_W7

Property Boolean pbNTServer                False                                                   

Running windows version is a server version
Property Boolean pbWindowsHome             False

Running on a Windows HOME version. That is Windows ME and Windows XP Home
Both are not recommended platforms for business (networking is limited).
So not for vdf.
Property Boolean pbX64                     False

pbX64 is set to true if your host OS is x64
Property Boolean pbRemoteDesktop           False

pbRemoteDesktop is set to true if your application currently runs under a remote desktop session
                                                                                                   
Property Boolean pbAdminRights             False

Does your user run with administrator rights or not (Windows 2000 or higher) When running under an older OS, it will always returns false.

Example code


In its most bare form you would call it to retrieve the string that
sums up all of the OS capabilities for your host like this:
                                                                           
Function HostOS Returns String                                             
  Handle  hoVersionInfo                                                    
  String  sOSVersion                                                       
                                                                           
  Move "" To sOSVersion                                                    
  Get Create U_cOSVersionInfo To hoVersionInfo                             
  If (hoVersionInfo) Begin                                                 
    Get OSVersion    Of hoVersionInfo To sOSVersion                        
  End                                                                      
                                                                           
  Function_Return sOSVersion                                               
End_Function // HostOS                                                     

This then returns a string as in the "Complete" form at the bottom of the screenshot here.