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?
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)
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
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.
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 .
À 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
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