«« Site Rescued »»

While the site is still going to move from its current host, a new site will now take its place. More Info.

The new site may have less content, but the core will now remain. And it will now play nicely with phones! Keep an eye on the DelphiDabbler Blog for news.

System Information Unit

Release: 5.4.0
Date: 19 March 2020
Delphi Compatibility:
D1 D2 D3 D4 D5 D6 D7 D2005 D2006 D2007 D2009 D2010 DXE DXE2 DXE3 DXE4
Red LED Red LED Red LED Grey LED Grey LED Grey LED Green LED Green LED Green LED Green LED Green LED Green LED Green LED Green LED Green LED Green LED

Change Log

Release v5.3.0 of 12 September 2016
  • Added support for detecting Windows 10 RS1 update - "Version 1607".
  • Renamed name of Windows 10 TH2 update from "November Update" to MSs new name - "Version 1511".
  • Added support for detecting Windows 2016 Server technical previews 1 to 5.
  • Revised TPJOSInfo.Description to include information from ServicePackEx method instead of ServicePack.
  • Minor update to read-me file.
Release v5.2.0 of 30 November 2015
  • Added support for detecting build number of Windows 10 TH2 "November Update".
  • Added new TPJOSInfo.ServicePackEx method that reports any OS service packs present just like TPJOSInfo.ServicePack but also returns the name of any significant, detectable, update that does not declare itself as a service pack. This method was added to enable Windows 10 TH2 "November Update" to be reported since it does not report itself as a service pack.
  • Changed behaviour of the TPJOSInfo.BuildNumber method. When not using the GetVersionEx API the code tries to deduce the build number from other information. If this fails BuildNumber now returns 0 instead of attempting to read the build number from the registry. The registry was found to be returning incorrect build numbers.
  • Updated read-me file re changes.
Release v5.1.0 of 11 September 2015
  • Added support for detecting Windows 10 for suitably manifested host applications.
  • Added new TPJOSInfo.IsReallyWindows10OrGreater method.
  • Changed so that Windows 8, in addition to Windows 8.1 and now Windows 10 can't be "spoofed". This was required so that Windows 8 will be reported when an un-manifested application is running on Windows 10, per Microsoft documentation. This is a breaking change from release 5.0.x.
  • Updated demo programs re support for detecting Windows 10 and to display result of new TPJOSInfo.IsReallyWindows10OrGreater method. Also added Windows 10 compatible manifest to each demo's resources.
  • Updated documentation re changes.
Release v5.0.2 of 30 October 2014
  • Fixed issue #31 "PJSysInfo v5.0.1 does not work on earlier OSs" (http://bit.ly/1DyM9BP) where TPJOSInfo was causing an access violation when run on Windows 98.
  • Fixed issue #33 "IsServer and IsWindowsServer return True on Windows 98" (http://bit.ly/101tdPh).
Release v5.0.1 of 04 April 2014
  • Fixed issue #29 (http://bit.ly/1eeLnxC) "Out of range error" that occurred when using Windows 8.1 or Windows Server 2012 R2.
  • Added support for DEBUG symbol to force range checking to be on for debugging purposes.
  • Minor changes to documentation.
Release v5.0.0 of 27 February 2014
  • Changed how operating system information is obtained and reported when running on Windows 8.1 (and later) in order to conform to API changes introduced by Microsoft in Windows 8.1. As a consequence when running on Windows 8.1 and later OS information for the installed OS will always be reported regardless of whether the host program is running in compatibility. On Windows 8 and earlier running in a compatibility mode will continue to cause OS information to be "spoofed" to reflect the emulated OS.
  • New compile option to help debug the Windows 8.1 method of OS information when using any OS back to Windows Vista.
  • Added new TPJOSInfo.CanSpoof method that indicates if compatibility mode will affect (spoof) reported OS information on the current operating system.
  • Windows 8.1 and Windows 2012 Server R2 are now detected and reported.
  • Windows XP Home Edition is now detected correctly.
  • Numerous new methods added to TPJOSInfo that can detect if the current OS is greater than or equal to a given OS. These methods are not affected by compatibility mode regardless of the compile option used. There is one method for every OS version and service pack from Windows 2000 onwards.
  • New TPJOSInfo.IsWindowsServer method that detects if the OS is a server in a manner not affected by compatibility mode for Windows 2000 and later.
  • New TPJOSInfo.InstallationDate method that returns the date the OS is installed.
  • New global variables added that are analogues of the SysUtils Win32*** variables but that are not affected by compatibility mode when run on Windows 8.1 or later.
  • New constants relating to obtaining version information not defined by all supported versions of Delphi have been added to the unit's interface section.
  • Updated demos:
    • Both VCL and FireMonkey 2 demos revised to display output of all new TPJOSInfo methods and new global variables.
    • VCL demo no longer scrolls when displaying lists of information that exceed window height.
  • Delphi 3 is no longer supported by the unit.
  • Updated documentation.
Release v4.0.3 of 11 January 2014
  • Fixed problem with compiler directives in System Information Unit that was causing compilation to fail on Delphi XE5.
  • Minor documentation tweaks and corrections.
Release v4.0.2 of 29 October 2013
  • Fixed potential registry access bug that may appear on Windows 2000 and earlier. See comment #1 of issue #14 (http://bit.ly/HqGb00).
Release v4.0.1 of 28 January 2013
  • Fixed bug in TPJOSInfo.RegisteredOrganisation (issue #23 - http://bit.ly/SZ4ohf)
Release v4.0.0 of 20 January 2013
  • PJSysInfo.pas is now compatible with Delphi 32 and 64 bit compilers and will compile with both VCL and FireMonkey 2 frameworks on Windows.
  • Added numerous new methods:
    • TPJComputerInfo: "IsAdmin", "IsUACActive", "BiosVendor", "ProcessorIdentifier", "ProcessorName", "SystemManufacturer" & "SystemProductName".
    • TPJSystemFolders: "ProgramFilesX86", "ProgramFilesRedirect", "CommonFilesX86" & "CommonFilesRedirect".
    • TPJOSInfo: "RegisteredOrganisation" & "RegisteredOwner".
  • All previously deprecated code removed, i.e.:
    • TPJSysInfo component and associated glyph file PJSysInfo.dcr.
    • All SIGetXXXX functions.
  • Used unit names are now qualified with namespace name on Delphi XE2 and later.
  • Changed original SysInfoDemo VCL project:
    • Default window font changed.
    • Form is no longer scaled.
    • Displayed text no longer word-wraps.
    • Added example output for all new methods.
    • Added manifest to resources to request themed controls and set elevation level.
    • New project configuration files with option to compile for 32 bit or 64 Windows targets on Delphi XE2 and later.
  • Added new FireMonkey 2 demo project with same basic functionality as revised SysInfoDemo project that can also be compiled for either 32 bit or 64 bit Windows targets.
  • Some refactoring.
  • WinHelp file removed.
  • Revised documentation and changed link to online help.
  • Demos placed in public domain.
Release v3.4.0 of 24 October 2012
  • Modified TPJOSInfo to detect Windows 8 and Windows 2012 Server.
  • Added new PRODUCT_* constants and descriptions.
  • Updated demo to display newly added OS versions.
  • Changed license to Mozilla Public License v2.0
  • Updated help file re addition of Windows 8 / Windows 20012 Server and re change of license.
  • Updated documentation.
Release v3.3.1 of 07 April 2010
  • Fixed bug (issue #14) to correctly read from registry on Windows 64 systems. NOTE: This bug may persist when compiled with old Delphis (pre Delphi 6).
  • Corrected buffer sizes used when TPJComputerInfo's ComputerName and UserName methods access Windows API functions.
Release v3.3.0 of 31 December 2009
  • Added new TPJOSInfo.IsRemoteSession method to check if the executable is running under Windows Terminal Server as a remote session.
  • Updated help file accordingly.
Release v3.2.2 of 16 December 2009
  • Fixed bug (issue #1) which prevented the unit from compiling with Delphi 5.
Release v3.2.1 of 14 November 2009
  • Prevented warnings on Delphi 4 when compiling without deprecated components.
  • Updated documentation.
Release v3.2.0 of 27 September 2009
  • Added some further PRODUCT_* constants that are new for Windows 7 / 2008 Server R2.
  • Changed character set handling to take account of Unicode and non-Unicode compilers.
  • Unit, but not demo, can now be compiled on Delphi 3.
  • Removed compiler warnings in Delphi 7.
  • All exceptions raised are now of type EPJsysInfo.
  • Updated documentation.
Release v3.1.0 of 13 April 2009
  • Updated help file re revised static classes.
  • Revised demo program by adding output for new methods.
  • Added further PROCESSOR_ARCHITECTURE_*, PROCESSOR_* and PRODUCT_* constants.
  • Made default OS data structures use Unicode versions when UNICODE is defined by compiler.
  • Changed to use GetNativeSystemInfo API function to get processor architecture if possible.
  • Modified TPJOSInfo to detect Windows 7 and Windows 2008 Server R2. Also changed a few OS and product descriptions.
  • Modified TPJOSInfo.Edition to add 64bit qualification to OS edition information for OSs running on 64 bit systems and using GetProductInfo API.
  • Added BootMode and IsNetworkPresent methods to TPJComputerInfo.
  • Added TPJSystemFolders.SystemWow64 method.
  • Product name of unknown later Windows version now contains major and minor version numbers.
Release v3.0.0 of 15 April 2008
  • Added support for GetProductInfo API (Vista)
  • Added support for Windows 2008 server and 2003 server R2.
  • Rewrote code that gets OS edition.
  • Added further VER_SUITE_ flags.
  • Added new PRODUCT_ and PROCESSOR_ flags.
  • Added new SM_STARTER and SM_SERVER2 constants.
  • Added Unicode version of OSVERSIONINFOEX and expanded number of types referring to ANSI and Unicode versions of these structures.
  • Added new methods to TPJOSInfo class.
  • Added new processor related methods to TPJComputerInfo.
  • Added new Win32XXX global variables relating to availability and value of product information.
  • Deprecated TPJSysInfo component and SIGetXXX are now compiled only if a special symbol is defined. By default they are not compiled and the component is not registered.
  • Updated help file re revised static class and removed topics for deprecated component and functions.
  • Revised demo program:
    • Added output for new methods.
    • Removed demo of deprecated code.
Release v2.1.0 of 15 October 2006
  • Added new TPJComputerInfo.MACAddress method that gets the MAC address of the first available network card.
Release v2.0.1 of 07 January 2006
  • Fixed bug in TPJOSInfo.ProductName method when running on Windows 2003.
Release v2.0.0 of 13 November 2005
  • Added new static classes that duplicate and extend the features of the TPJSysInfo component:
    • TPJComputerInfo: provides information about the host computer;
    • TPJSystemFolders: gets paths to system folders;
    • TPJOSInfo: provides operating system information.
  • Added new features to the TOSInfo classes:
    • getting Windows product ID;
    • detection of Windows Vista, XP Media Edition and XP Tablet Edition;
    • detection of WOW64 sub-system;
    • further operating system detection features.
  • Added new global Win32* variables to provide extended operating system version information in style of variables from SysUtils unit.
  • Re-implemented TPJSysInfo and SIGet* functions in terms of new static classes.
  • Flagged TPJSysInfo and the SIGet* functions as deprecated. New static classes should now be used instead.
  • Made TOSVersionInfoEx type and VER_NT_* and VER_SUITE_* constants public.
  • Updated help file.
  • Added A-link keywords file for integration into Delphi 6/7 help systems.
  • Updated demo program re new features.
Release v1.2.0 of 30 June 2003
  • Updated palette name to "DelphiDabbler" from "PJ Stuff".
  • Added support for Windows 2003 server to OS detection functions.
  • Removed requirement for Registry unit by accessing registry via Windows API where required.
  • Made TOSVersionInfoEx record definition into packed record.
  • GetOSProduct, GetOSProductType & GetOSServicePack updated according to latest example on MSDN.
  • Used resource strings for exception messages.
  • Updated help file.
  • Added new demo application.
Release v1.1.0 of 25 November 2001
  • Added functions and component properties to retrieve Program Files and Common Files folders.
Release v1.0.0 of 10 November 2001
  • Original version.