Many Windows admins have encountered this: You've got local admin rights, but certain settings remain locked down by Group Policy. The screensaver policy (particularly ScreenSaverIsSecure
and ScreenSaverTimeout
) is one of the most common offenders. Here's how to break free when the domain policy won't let go.
Group Policy applies in this order: Local → Site → Domain → OU. When policies conflict, the last applied wins. Domain policies typically trump local settings. But with admin access, we can manipulate this.
# Check applied screensaver policies
gpresult /H gpreport.html
Get-GPResultantSetOfPolicy -ReportType Html -Path "C:\temp\rsop.html"
Group Policy settings ultimately write to the registry. We can manually set values in these keys (note: changes may revert at next GP refresh):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveActive"="1"
"ScreenSaveTimeOut"="600"
"SCRNSAVE.EXE"="C:\\Windows\\System32\\Bubbles.scr"
For persistent changes, configure the local GPO to override domain settings:
- Run
gpedit.msc
- Navigate to: User Configuration → Administrative Templates → Control Panel → Personalization
- Enable "Prevent changing screen saver" and set to Disabled
- Run
gpupdate /force
For domain-joined machines where you can't modify GPOs, try this PowerShell script to remove the screensaver policy enforcement:
$registryPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System"
$name = "DisableScreenSaver"
$value = "0"
if (-Not (Test-Path $registryPath)) {
New-Item -Path $registryPath -Force | Out-Null
}
Set-ItemProperty -Path $registryPath -Name $name -Value $value -Type DWord
# Reset screensaver timeout
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveTimeOut -Value 300
Create a scheduled task that runs at login to continuously reapply your preferred settings:
$action = New-ScheduledTaskAction -Execute 'reg.exe' -Argument 'add "HKCU\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f'
$trigger = New-ScheduledTaskTrigger -AtLogOn
Register-ScheduledTask -TaskName "ForceScreensaver" -Action $action -Trigger $trigger -RunLevel Highest
- These methods may violate corporate IT policies
- Changes might be reverted during next GP update (typically every 90 minutes)
- For domain machines, the cleanest solution is to request a policy exception from your IT admin
As a Windows administrator, you might encounter situations where Group Policy Objects (GPOs) restrict certain settings even when you have local administrator privileges. A common example is being unable to change screensaver settings due to enforced policies.
Group Policy settings are hierarchical and typically take precedence over local settings. When a domain controller pushes policies, they're applied in this order:
- Local Group Policy
- Site-level policies
- Domain-level policies
- OU-level policies
1. Temporarily Disconnect from Domain
This is the simplest approach for testing:
# PowerShell command to disconnect from domain temporarily
Restart-Computer -Force
After restart, log in using cached credentials and make your changes before reconnecting to the domain.
2. Local Group Policy Editor
Try modifying the local policy:
gpedit.msc
Navigate to: User Configuration > Administrative Templates > Control Panel > Personalization
3. Registry Override
Many GPO settings ultimately write to the registry. You can attempt to override them:
# PowerShell to modify screensaver registry key
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "ScreenSaveActive" -Value "1"
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "SCRNSAVE.EXE" -Value "C:\Windows\System32\Bubbles.scr"
4. Using Security Filtering
If you have access to Group Policy Management Console:
1. Open GPMC.msc
2. Navigate to the restrictive GPO
3. Go to Delegation tab
4. Add your admin account with "Apply group policy" permission set to Deny
Creating a Startup Script
For persistent changes, create a PowerShell script in the startup folder:
$Shell = New-Object -ComObject "WScript.Shell"
$Key = "HKCU:\Control Panel\Desktop"
$Shell.RegWrite($Key + "\ScreenSaveActive", "1", "REG_SZ")
$Shell.RegWrite($Key + "\SCRNSAVE.EXE", "C:\Windows\System32\Bubbles.scr", "REG_SZ")
Using Group Policy Preferences
If you have access to modify GPOs, use Item-Level Targeting to create exceptions:
<GroupPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Computer>
<TargetCollection>
<Filters>
<Filter xsi:type="UserFilter">
<Name>AllowLocalAdminOverride</Name>
<UserGroup>Administrators</UserGroup>
<Action>Allow</Action>
</Filter>
</Filters>
</TargetCollection>
</Computer>
</GroupPolicy>
- These methods may violate corporate security policies
- Changes might be overwritten during next Group Policy refresh
- Some settings are enforced with additional security measures
- Always document your changes for troubleshooting