private static void setAsCurrentScreensaver(string path) {
if (File.Exists(path)) {
StringBuilder buffer = new StringBuilder(512);
GetShortPathName(path, buffer, buffer.Capacity);
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "SCRNSAVE.EXE", Convert.ToString(buffer));
// https://msdn.microsoft.com/library/windows/desktop/ms724832.aspx
RegistryValueKind rvkType = RegistryValueKind.String;
if (Environment.OSVersion.Version.Major > 6 || (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor > 0)) {
rvkType = RegistryValueKind.DWord;
}
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "ScreenSaveActive", 1, rvkType);
}
}