是否从命令行在Windows上以静默方式设置屏幕保护程序?

是否从命令行在Windows上以静默方式设置屏幕保护程序?,windows,screensaver,windows-screensaver,Windows,Screensaver,Windows Screensaver,我知道如果你跑步: rundll32.exe desk.cpl,InstallScreenSaver toasters.scr 您可以将屏幕保护程序设置为toasters.scr,但它也会打开屏幕保护程序配置对话框。有没有办法通过运行命令在Windows上设置屏幕保护程序而不打开任何对话框?不运行该命令,您只需运行该命令即可 reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Win

我知道如果你跑步:

rundll32.exe desk.cpl,InstallScreenSaver toasters.scr

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

不运行该命令,您只需运行该命令即可

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

这将更新屏幕保护程序

我找到了两种方法:

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

指令 JAVA 2) 从注册表获取路径并重写scr文件,但如果设置为null,则无法执行此操作。

现代方式,使用powershell 您可以将它们放入使用以下命令执行的
ScrnInstaller.ps1
脚本中:

$ powershell -WindowStyle hidden -f "ScrnInstaller.ps1"
NB:这些参数由组策略参数取代(例如,为企业中的用户强制设置屏幕保护程序)。你有几种方法来强迫它

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

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

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
对于myenterprise.com。对于新的GPLink参数:

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

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

以上内容在批处理文件中启动空白屏幕保护程序。 赞成的意见; 用C:\Windows\system32\中的其他5个屏幕保护程序之一替换scrnsave.scr也可以。 您无需重新启动系统,系统将立即启动。 欺骗; 我不知道如何设置超时。我怀疑会有一个类似于

c:\Windows\System32\scrnsave.scr/ScreenSaveTimeOut=150-start

我认为需要一个单独的批处理文件来停止屏幕保护程序。

你是出于好意还是恶意?@AndreasRejbrand我是出于好意。我正在开发Dashman(),它的主要用途是一个屏幕保护程序,因此,在安装过程中,我想提供将其设置为默认值的选项,但是对话框有点混乱。我明白了,这似乎是公平的。不过,我怀疑没有记录在案的方法可以做到这一点。不过,在谷歌上快速搜索“以编程方式设置Windows屏幕保护程序”会给出一些提示。因为安装程序可能是以提升的权限运行的,所以这些权限实际上可能有效。@pupeno你看过这篇文章了吗:看起来很好。我打算今天晚些时候或明天试试。请在我处理一些紧急情况时耐心等待。@pupeno,我很惊讶,因为您提到您正在运行
rundll32.exe desk.cpl,InstallScreenSaver toasters.scr
,所以您已经知道如何用Java运行命令。这个答案给我的脸上加了一块化妆品。这不是两种方法,这只是方法1以及如何在Java中执行它。我没有在我的回答中提到这一点,因为你的问题和解决方案的关键部分是
reg添加“HKEY\U CURRENT\U USER\Control Panel\Desktop”/v SCRNSAVE.EXE/t reg\u SZ/d C:\Windows\system32\toasters.scr/f
,而最初的问题只是关于屏幕保护程序,不timeouts@TarunLalwani您的方法不检查屏幕保护程序是否打开,超时是额外的。它对我不起作用,我将“ScreenSaveActive”设置为0。我添加了Java代码,因为我在我的应用程序远程管理工具(RAT)中实现了这个功能,以管理公司的计算机。所以我就分享了。第二种方法是重写现有的.scr文件,它不是Java代码。顺便说一句,第一季度做得很好。
对我来说不起作用,我把“ScreenSaveActive”设置为0
,这是我希望早些时候听到的:-)。感谢您的澄清。还有
2)从注册表获取路径并重写scr文件,但如果设置为null,则无法执行此操作。
您的意思是覆盖屏幕保护程序本身吗?我的意思是覆盖已使用的scr。但是,您需要使用管理员帐户获得文件的所有权。如果您没有看到应用的注册表设置,请运行
rundll32.exe user32.dll,UpdatePerUserSystemParameters
$ powershell -WindowStyle hidden -f "ScrnInstaller.ps1"
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
Get-GPO -Name "ScreenSaverTimeOut" | Get-GPOReport -ReportType HTML -Path $Home\report.html
Invoke-Item $Home\report.html
c:\Windows\System32\scrnsave.scr -start