Function Os() Foundation

Returns the name of the operating system.

Syntax
Os([<nOsId>]) --> cOsInfo
Parameters
<nOsId>
<nOsId> is one of the following #define constants declared in Os.ch:
Arguments for Os()
Constant Return value
OS_DESCRIPTION *) Complete name with version information
OS_PLATFORM The operating system platform.
OS_FAMILY The operating system family
OS_PRODUCT Short product name
OS_FULLNAME Complete product name
OS_VERSION Up to windows 8 version number formatted to ##.##.####. Windows 10 and later version number formatted to ####.#####
OS_BUILD Build number
OS_PATCH Information about installed patches/service packs
  1. default value
Return

Os() returns information about the operating system as a character string.

Both the format and the meaning of the product names and version numbers of the Windows operating systems have changed over time. For this reason, it is recommended to use the build number (OS_BUILD) as the sole criterion for checking for a certain operating system and/or feature set. A list of the various Windows versions along with their respective build numbers is available here: https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions.

Description

The environment function Os() determines the name, the type and version information of the operating system running on the computer. The extended classification into platform, family and product is necessary to be able to react to differences or common things more exact if platform-dependent code is to be executed, like DllCall().

The following table shows examples of return values of platform, family and product:

Samples of return values
Platform Family Product Full name Build number
Define OS_PLATFORM OS_FAMILY OS_PRODUCT OS_FULLNAME OS_BUILD
Samples WIN32 WINNT WIN10 Windows 11 22000
WIN32 WINNT WIN10 Windows 10 19044
WIN32 WINNT WIN8 Windows 8 9200
WIN32 WINNT WIN7 Windows 7 7601
WIN32 WINNT WIN2K Windows 2000 2195
WIN32 WIN9X WIN95 Windows 95 950

Examples
Sample how to use OS_PLATFORM, OS_FAMILY and OS_PRODUCT
// The sample demonstrates the usage of Os() and how to 
// correctly execute platform-dependent code. 
#include "os.ch" 

PROCEDURE Main 
   LOCAL cAutoExec 

   IF Os(OS_FAMILY) == "WIN9X" 
      IF Os(OS_PRODUCT) != "WINME" 
         cAutoExec := MemoRead("c:\Autoexec.bat") 
      ENDIF 
   ENDIF 
   IF Os(OS_FAMILY) == "WINNT" 
         cAutoExec := MemoRead("c:\Autoexec.nt") 
   ENDIF 
Os()
// The example demonstrates the return values of the function Os() 
#include "os.ch" 

PROCEDURE Main 

   ? Os()                  //  Windows 10 2009 Build 19044 
   ? Os( OS_DESCRIPTION )  //  Windows 10 2009 Build 19044 
   ? Os( OS_PLATFORM )     //  WIN32 
   ? Os( OS_FAMILY )       //  WINNT 
   ? Os( OS_PRODUCT )      //  WIN10 
   ? Os( OS_FULLNAME )     //  Windows 10 
   ? Os( OS_VERSION )      //  2009.19044 
   ? Os( OS_BUILD )        //  19044 

   WAIT 

RETURN 
Feedback

If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.