web-dev-qa-db-fra.com

Configurer l'écran de veille sous Windows à partir de la ligne de commande?

Je sais que si tu cours:

rundll32.exe desk.cpl,InstallScreenSaver toasters.scr

vous pouvez définir l'économiseur d'écran sur toasters.scr mais cela ouvre également la boîte de dialogue de configuration de l'économiseur d'écran. Existe-t-il un moyen de configurer l'économiseur d'écran sous Windows sans ouvrir de boîte de dialogue en exécutant une commande?

5
pupeno

J'ai trouvé deux façons de le faire:

1) Ajouter dans le registre, assurez-vous qu'il est actif et setTimeOut (seulement quelques minutes)

CMD

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\Mystify.scr /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d 60 /f

Java

setScreenSaver(true, 1, "C:\\Windows\\System32\\Mystify.scr");

/**
 * set screen saver active, timeout and scr, only works in Windows
 * @param isActive
 * @param timeOutMin only minutes
 * @param pathToScr path to scr
 * @throws IOException
 */
public static void setScreenSaver(boolean isActive, int timeOutMin, String pathToScr) throws IOException{
    String _isActive = isActive ? "1" : "0";
    //only works with minutes, min. 1 min
    String _timeOut = timeOutMin > 1 ? timeOutMin*60+"" : "60";
    Runtime.getRuntime().exec(new String[] { "reg", "add", "HKEY_CURRENT_USER\\Control Panel\\Desktop", "/v", "SCRNSAVE.EXE", "/t", "REG_SZ", "/d", pathToScr,"/f" });
    Runtime.getRuntime().exec(new String[] { "reg", "add", "HKEY_CURRENT_USER\\Control Panel\\Desktop", "/v", "ScreenSaveActive", "/t", "REG_SZ", "/d", _isActive,"/f" });
    Runtime.getRuntime().exec(new String[] { "reg", "add", "HKEY_CURRENT_USER\\Control Panel\\Desktop", "/v", "ScreenSaveTimeOut", "/t", "REG_SZ", "/d", _timeOut,"/f" });
}

2) Obtenir le chemin du registre et réécrire le fichier scr, mais si est défini sur null, vous ne pouvez pas le faire.

5
Maciej Pulikowski

La manière moderne, avec powershell

Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveActive -Value 1
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveTimeOut -Value 60
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name scrnsave.exe -Value "c:\windows\system32\mystify.scr"

Vous pouvez les mettre dans un script ScrnInstaller.ps1 que vous exécutez avec la commande:

$ powershell -WindowStyle hidden -f "ScrnInstaller.ps1"

NB: Les paramètres Thoses sont remplacés par des paramètres de stratégie de groupe (par exemple, pour forcer un économiseur d'écran pour les utilisateurs d'une entreprise). Vous avez plusieurs façons de le forcer ici .

Avec connaissance utilisateur/domaine/site: stratégie de groupe

À l'aide de la stratégie de groupe et de powershell, vous pouvez gérer les actions pour lesquelles Unité organisationnelle/Domaine/Site affecte le changement et prévaut sur les paramètres de l'utilisateur.

Modification de la stratégie de groupe dans le cas du délai d'expiration de l'écran de veille:

Get-Command -Module GroupPolicy
New-GPO -Name "ScreenSaverTimeOut" -Comment "Sets the time to 900 seconds"
Set-GPRegistryValue -Name "ScreenSaverTimeOut" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 900
New-GPLink -Name "ScreenSaverTimeOut" -Target "ou=MyOU,dc=myenterprise,dc=com"
gpupdate /force /target:computer

pour myenterprise.com. Pour les paramètres New-GPLink: référence msdn

Ensuite, vous pouvez revoir votre généraliste:

Get-GPO -Name "ScreenSaverTimeOut" | Get-GPOReport -ReportType HTML -Path $Home\report.html
Invoke-Item $Home\report.html
3
Soleil

Au lieu d’exécuter cette commande, vous devriez simplement exécuter la commande

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\system32\toasters.scr /f

Cela mettra à jour l'économiseur d'écran

1
Tarun Lalwani