从命令行静默地在 Windows 上设置屏幕保护程序



我知道如果你运行:

rundll32.exe desk.cpl,InstallScreenSaver toasters.scr

您可以将屏幕保护程序设置为 toasters.scr但它也会打开屏幕保护程序配置对话框。有没有办法在Windows上设置屏幕保护程序,而无需通过运行命令打开任何对话框?

我找到了两种方法:

1(添加注册表,确保处于活动状态并设置超时(仅几分钟(

CMD

reg add "HKEY_CURRENT_USERControl PanelDesktop" /v SCRNSAVE.EXE /t REG_SZ /d C:WindowsSystem32Mystify.scr /f
reg add "HKEY_CURRENT_USERControl PanelDesktop" /v ScreenSaveActive /t REG_SZ /d 1 /f
reg add "HKEY_CURRENT_USERControl PanelDesktop" /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(从注册表中获取路径并重写scr文件,但如果设置为null,则无法执行此操作。

现代方式,带电源外壳

Set-ItemProperty -Path "HKCU:Control PanelDesktop" -Name ScreenSaveActive -Value 1
Set-ItemProperty -Path "HKCU:Control PanelDesktop" -Name ScreenSaveTimeOut -Value 60
Set-ItemProperty -Path "HKCU:Control PanelDesktop" -Name scrnsave.exe -Value "c:windowssystem32mystify.scr"

您可以将这些放在使用以下命令执行的ScrnInstaller.ps1脚本中:

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

注意:这些参数被组策略参数取代(例如,为企业中的用户强制使用屏幕保护程序(。您有几种方法可以在此处强制使用它。

具有用户/域/站点意识:组策略

使用 powershell 和组策略,可以管理要影响更改的组织单位/域/站点,并且它优先于用户设置。

屏幕保护程序超时的情况下更改组策略:

Get-Command -Module GroupPolicy
New-GPO -Name "ScreenSaverTimeOut" -Comment "Sets the time to 900 seconds"
Set-GPRegistryValue -Name "ScreenSaverTimeOut" -Key "HKCUSoftwarePoliciesMicrosoftWindowsControl PanelDesktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 900
New-GPLink -Name "ScreenSaverTimeOut" -Target "ou=MyOU,dc=myenterprise,dc=com"
gpupdate /force /target:computer

为 myenterprise.com。对于新的 GPLink 参数:msdn 参考

然后,你可以查看家庭医生:

Get-GPO -Name "ScreenSaverTimeOut" | Get-GPOReport -ReportType HTML -Path $Homereport.html
Invoke-Item $Homereport.html

与其运行该命令,不如运行该命令

reg add "HKEY_CURRENT_USERControl PanelDesktop" /v SCRNSAVE.EXE /t REG_SZ /d C:Windowssystem32toasters.scr /f

这将更新屏幕保护程序

c:WindowsSystem32scrnsave.scr -start

以上实时在批处理文件中将启动空白屏幕保护程序。优点;将 scrnsave.scr 替换为 C:\Windows\system32\ 中的其他 5 个屏幕保护程序之一也可以正常工作。您无需重新启动系统,它将立即启动。缺点;我不知道如何设置超时。我怀疑这条线会有像c:WindowsSystem32scrnsave.scr /ScreenSaveTimeOut = 150 -start这样的论据我认为需要一个单独的批处理文件来停止屏幕保护程序。

相关内容

  • 没有找到相关文章

最新更新