|
|
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Security;
- using System.Threading;
- using Ameliorated.ConsoleUtils;
- using Microsoft.Win32;
- using System.Windows.Forms;
-
- namespace amecs.Actions
- {
- public class Lockscreen
- {
- public static bool ChangeImage()
- {
- ConsoleTUI.OpenFrame.WriteCenteredLine("Select an image");
-
- Thread.Sleep(1000);
- var dialog = new System.Windows.Forms.OpenFileDialog();
- dialog.Filter = "Image Files (*.jpg; *.jpeg; *.png; *.bmp; *.jfif)| *.jpg; *.jpeg; *.png; *.bmp; *.jfif"; // Filter files by extension
- dialog.Multiselect = false;
- dialog.InitialDirectory = Globals.UserFolder;
-
- NativeWindow window = new NativeWindow();
- window.AssignHandle(Process.GetCurrentProcess().MainWindowHandle);
- if (dialog.ShowDialog(window) == DialogResult.OK)
- {
- string file;
- try
- {
- file = dialog.FileName;
- }
- catch (SecurityException e)
- {
- Console.WriteLine();
- ConsoleTUI.OpenFrame.Close("Security error: " + e.Message, ConsoleColor.Red, Console.BackgroundColor, new ChoicePrompt() {AnyKey = true, Text = "Press any key to return to the Menu: "});
- return false;
- }
-
- Console.WriteLine();
- var choice = new ChoicePrompt() { Text = "Remove lockscreen blur? (Y/N): " }.Start();
- if (!choice.HasValue) return true;
- bool blur = choice == 0;
-
- ConsoleTUI.OpenFrame.WriteCentered("\r\nSetting lockscreen image");
-
- using (new ConsoleUtils.LoadingIndicator(true))
- {
- Thread.Sleep(500);
-
- try
- {
- if (blur)
- new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Policies\Microsoft\Windows\System",
- ValueName = "DisableAcrylicBackgroundOnLogon",
- Type = Reg.RegistryValueType.REG_DWORD,
- Data = 1,
- }.Apply();
- else
- new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Policies\Microsoft\Windows\System",
- ValueName = "DisableAcrylicBackgroundOnLogon",
- Type = Reg.RegistryValueType.REG_DWORD,
- Data = 0,
- }.Apply();
- } catch { }
-
- new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Creative\" + Globals.UserSID,
- ValueName = "RotatingLockScreenEnabled",
- Type = Reg.RegistryValueType.REG_DWORD,
- Data = 0,
- }.Apply();
- new Reg.Value()
- {
- KeyName = @$"HKU\{Globals.UserSID}\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager",
- ValueName = "RotatingLockScreenEnabled",
- Type = Reg.RegistryValueType.REG_DWORD,
- Data = 0,
- }.Apply();
-
- File.Delete(Environment.ExpandEnvironmentVariables(@"%WINDIR%\Web\Screen\img100.jpg"));
- File.Copy(file, Environment.ExpandEnvironmentVariables(@"%WINDIR%\Web\Screen\img100.jpg"));
-
- foreach (var dataDir in Directory.EnumerateDirectories(Environment.ExpandEnvironmentVariables(@"%PROGRAMDATA%\Microsoft\Windows\SystemData")))
- {
-
-
- var subDir = Path.Combine(dataDir, "ReadOnly");
- if (!Directory.Exists(subDir))
- continue;
- Directory.GetDirectories(subDir, "Lockscreen_*").ToList().ForEach(x => Directory.Delete(x, true));
- }
-
- }
- Console.WriteLine();
- ConsoleTUI.OpenFrame.Close("Lockscreen image changed successfully", ConsoleColor.Green, Console.BackgroundColor, new ChoicePrompt() {AnyKey = true, Text = "Press any key to return to the Menu: "});
- return true;
- }
- else
- {
- Console.WriteLine();
- ConsoleTUI.OpenFrame.Close("You must select an image.", new ChoicePrompt() {AnyKey = true, Text = "Press any key to return to the Menu: "});
- return true;
- }
- }
- }
- }
|