如何在Windows XP,2000,Vista和7中以编程方式安装NSIS屏幕保护程序?

时间:2012-10-24 23:41:12

标签: windows install nsis screensaver

我已经尝试过的解决方案是:

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年有效,但它会弹出一个配置对话框,然后当我回到对话框时,设置就消失了。

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

1 个答案:

答案 0 :(得分:0)

结合INI方法和此处的注册表方法:How do I change the screensaver programatically?。这是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中不起作用。