Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does a screensaver still have to be installed into System32?

Back in my Delphi days, I wrote several screensavers - each was a single executable that was dropped into the System32 folder, where the Windows XP Display control panel saw it and made it available. All good.

I'm now writing a significantly more complex screensaver in C# that is necessarily spread across multiple assemblies (it's using a plug-in model: merging all the assemblies into a single executable isn't an option).

Dumping all the files into System32 doesn't seem to be very tidy - not to mention that it simply won't work on a 64-bit system.

Is there any other way to install a screensaver on a Windows system?

I'm willing to take a dependency on Vista/Win7 if necessary.

The only suggestion I've had made so far, is to install the bulk of the screensaver normally, under Program Files, and put a trigger/launcher into System32.

like image 857
Bevan Avatar asked Feb 22 '23 22:02

Bevan


1 Answers

I found more information ...

A screensaver does not have to be installed into System32 (or SysWoW64).

However, the control panel won't find it and won't list it for selection.

Unless it's configured as the current screensaver.

Let me explain ... the current screensaver is specified by the SCRNSAVE.EXE registry key found in HKEY_CURRENT_USER\Control Panel\Desktop. The value of this key is the complete path to a .SCR file.

The Display (XP) or Screen Saver (Win7) control panel scans System32 (and SysWow64 on 64 bit systems) for .SCR files. It also scans the folder containing the current screensaver, if that's different.

So, if you set the registry key directly, the screensaver will be listed by the control panel and available for selection. But, as soon as the user selects a different screensaver, the next invocation of the control panel won't list the new screensaver.

like image 75
Bevan Avatar answered Feb 25 '23 02:02

Bevan