Enable screen saver locking (Perl)

This code can be found in Chapter 2 of Windows Server 2003 Security Cookbook

Purchase XP Cookbook or Networking Recipes for only $25 plus shipping! While supplies last.

Find out how to download all of the Perl code from this site.

# This code enables screen saver locking for all users that log on
# a system even if they've configured other screen saver settings previously.
# ------ SCRIPT CONFIGURATION ------

use Win32::OLE;

$strComputer = '.';
$strScreenSaveActive = '1';
$strScreenSaverIsSecure = '1';
$strScreenSaveTimeout = '300';
$strScrnSave = 'scrnsave.scr';
# ------ END CONFIGURATION ---------
use constant HKEY_USERS => 0x80000003;

$objReg = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\default:StdRegProv');
$objReg->EnumKey(HKEY_USERS, '', $arrSubKeys);

foreach my $strSubkey (@{$arrSubKeys}) {
    print "$strSubkey\n";
    $objReg->EnumValues(HKEY_USERS, $strSubkey . '\\Control Panel\\Desktop', $arrValues, $arrTypes);
    if (IsArray($arrValues)) {
        print "  setting screen saver values\n";
        $objReg->SetStringValue(HKEY_USERS, $strSubkey . '\\Control Panel\\Desktop', 'ScreenSaveActive', $strScreenSaveActive);
        $objReg->SetStringValue(HKEY_USERS, $strSubkey . '\\Control Panel\\Desktop', 'ScreenSaverIsSecure', $strScreenSaverIsSecure);
        $objReg->SetStringValue(HKEY_USERS, $strSubkey . '\\Control Panel\\Desktop', 'ScreenSaveTimeOut', $strScreenSaveTimeout);
        $objReg->SetStringValue(HKEY_USERS, $strSubkey . '\\Control Panel\\Desktop', 'SCRNSAVE.EXE', $strScrnSave);
    }
    else {
        print "  NOT setting screen saver values\n";
    }
    print "\n";
}

This code has been viewed 1103 times.

New from the creators of TechTasks.com: StatSheet.com