Search code examples
windowsscreensaver

How to install screensaver programmatically?


How to install (register) screensaver programmatically?


Solution

  • AFAIk there are two ways:

    1. Permanent registration by copying it to a location that windows searches, such as System32. But don't hardcode "C:\Windows\System32". You need to query the system to find out where the system directory is.
    2. Calling the Install action on the .scr file, which results in temporary activation. But the screensaver will disappear once another has been selected and the dialog restarted.

    But this is from Win95 times, so it's possibly outdated.


    I see three ways to call install:

    1. ShellExecute(Ex) using the install verb
    2. Call rundll32.exe desk.cpl,InstallScreenSaver %l
    3. Load desk.cpl as library(LoadLibrary or by declaring an import for InstallScreenSaver) and then call the InstallScreenSaver method with your own path as parameter.