0

我已经尝试过但不起作用的解决方案是:

1) 将 ini 键添加到 $WINDIR\system.ini

[boot]
SCRNSAVE.EXE $SYSDIR\savername.scr

2) 调用 user32.dll::SystemParametersInfo(17, 1, 0, 2)

以上适用于XP,但不适用于2000

rundll32.exe desk.cpl,InstallScreenSaver <path to screensaver>

这种工作在 2000 年,但它会弹出一个配置对话框,然后当我回到对话框时,设置就消失了。

寻找适用于所有平台的解决方案或一组解决方案,不弹出配置屏幕,打开配置对话框时保留设置并且不需要第三方软件。

4

1 回答 1

0

有效的方法是将 INI 方法和此处找到的注册表方法相结合:如何以编程方式更改屏幕保护程序?. 这是 NSIS 代码:

!include WinVer.nsh

; Install the executable
${If} ${AtMostWinXP}
  SetOutPath "$SYSDIR"
  File screen.scr
${EndIf}
SetOutPath "$INSTDIR"
File screen.scr

; Set screensaver and make it active
${If} ${AtMostWinXP}
  WriteINIStr "$WINDIR\system.ini" "boot" "SCRNSAVE.EXE" "$SYSDIR\screen.scr"

${Else}
  WriteRegStr HKCU "Control Panel\desktop" "SCRNSAVE.EXE" "$INSTDIR\screen.scr"
  WriteRegStr HKCU "Control Panel\desktop" "ScreenSaveActive" "1"
${EndIf}

; Notify system of the change
System::Call 'user32.dll::SystemParametersInfo(17, 1, 0, 2)'

请注意,我将屏幕保护程序安装在 \windows\system32 和包安装目录中。由于某种原因,在 system32 中安装在 Windows 2000 中不起作用。

于 2012-10-25T00:15:41.067 回答