OS_WELCOMELOGONUI

When the IsOS function is given OS_WELCOMELOGONUI as its dwOS argument, it tests whether the Welcome Logon User Interface is both supported and enabled.

Behaviour

The answer is obtained by different methods in different builds of SHLWAPI. All builds agree on a test for whether the Welcome Logon User Interface is enabled, but they differ in how they test whether the feature is supported.

Supported

To SHLWAPI version 6.0 from Windows Vista, the Welcome Logon User Interface is supported only if running on an operating system from before Windows Vista and only then for workstations. The test for Windows Vista or higher is that of OS_VISTAORGREATER. The test for a workstation is that the wProductType member of the version information obtained from GetVersionEx is VER_NT_WORKSTATION.

For version 6.0 from Windows XP SP2 and higher, but before Windows Vista, the feature is supported only on workstations that are not domain members. The test for domain membership is essentially that of OS_DOMAINMEMBER.

The earliest builds of version 6.0 check just that the local computer is not a domain member.

Enabled

As for whether the supported feature is enabled, all builds check the registry. The feature is enabled if the GinaDLL value is not present and the LogonType value is non-zero. The GinaDLL value is from one key only:

Keys HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
Value GinaDLL

If the value is present but has more than 260 bytes of data, it is interpreted as being not present. The LogonType value is from either of two keys in the registry, listed below in order of decreasing precedence:

Keys HKEY_LOCAL_MACHINE\Software\\Microsoft\Windows\CurrentVersion\policies\system
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
Value LogonType
Type REG_DWORD
Default 0

If the value is present but has the wrong data type, it evaluates as zero.

Availability

The OS_WELCOMELOGONUI case of the SHLWAPI function IsOS is supported in version 6.0 only. (SHLWAPI version 6.1 and higher are hard-coded to return FALSE.)