web-dev-qa-db-ja.com

コマンドラインからWindowsでスクリーンセーバーをサイレントに設定しますか?

あなたが走れば:

rundll32.exe desk.cpl,InstallScreenSaver toasters.scr

スクリーンセーバーをtoasters.scrに設定できますが、スクリーンセーバー構成ダイアログも開きます。コマンドを実行してダイアログを開かずにWindowsでスクリーンセーバーを設定する方法はありますか?

6
pupeno

私はそれを行う2つの方法を見つけました:

1)レジストリに追加し、アクティブでsetTimeOutであることを確認します(数分のみ)

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)レジストリからパスを取得してscrファイルを書き換えますが、nullに設定されている場合は実行できません。

7

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"

これらをScrnInstaller.ps1コマンドで実行するスクリプト:

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

NB:これらのパラメーターは、グループポリシーパラメーターによってスーパーシードされます(たとえば、企業のユーザーにスクリーンセーバーを強制するため)。強制する方法はいくつかあります here

ユーザー/ドメイン/サイト認識:グループポリシー

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。 New-GPLinkパラメーターの場合: msdn reference

次に、GPを確認できます。

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

そのコマンドを実行する代わりに、コマンドを実行する必要があります

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

これによりスクリーンセーバーが更新されます

1
Tarun Lalwani