HOWTO: Password Protecting Screen Savers without ScrnSave.lib

ID: Q182382

The information in this article applies to:

SUMMARY

The ScrnSave.lib static library provides the "standard" Windows (in this article, "Windows" refers to Windows 95 and Windows 98 and does not include any version of Windows NT) Screen Saver password, not Windows itself. The "standard" Windows Screen Saver password is not available to Screen Savers that are not written to use ScrnSave.lib. Screen Savers that are not written to use ScrnSave.lib need to implement independent password authentication, encryption, and storage.

Windows NT ignores the password handling within the Screen Saver and uses the user's system password.

MORE INFORMATION

The ScrnSave.lib library provides password protection for Screen Savers that use it. Windows Screen Savers that are not written with ScrnSave.lib need to provide independent password handling. To do this, Screen Savers need to provide a Password Change dialog box.

The Password Change dialog box is displayed when the Screen Saver is started with a "/a <HWND>" argument, where <HWND> is an unsigned decimal number representing the HWND of the owner window of the password dialog box. If no HWND is passed in the Password Change dialog box, the foreground window should own the Password Change dialog box.

When the Screen Saver runs it should check the HKEY_CURRENT_USER/ REGSTR_PATH_SCREENSAVE/REGSTR_VALUE_USESCRPASSWORD (REGSTR_PATH_SCREENSAVE and REGSTR_VALUE_USESCRPASSWORD can be found in regstr.h) registry key if it needs to use the Screen Saver's password protection. If the Screen Saver does need to use its password protection, it needs to prevent the user from switching to other applications without giving the password. To do this the Screen Saver needs to call:

   int prev;

   SystemParametersInfo(SPI_SCREENSAVERRUNNING,TRUE,&prev,0);

This prevents the user from using ALT+TAB to switch to another application or CTRL+ALT+DELETE to kill the Screen Saver.

When the user hits a key or moves the mouse, the Screen Saver confirms the password. If the password is validated, the Screen Saver calls the following to re-enable task switching:

   int prev;

   SystemParametersInfo(SPI_SCREENSAVERRUNNING,FALSE,&prev,0);

Additional query words:
Keywords          : kbNTOS kbScreenSaver kbGrpUser kbWinOS 
Issue type        : kbhowto

Last Reviewed: December 26, 1998