|
|
- using System;
- using System.DirectoryServices.AccountManagement;
- using System.Linq;
- using System.Security.Principal;
- using Ameliorated.ConsoleUtils;
- using Microsoft.Win32;
- using amecs.Actions;
- using Menu = Ameliorated.ConsoleUtils.Menu;
-
- namespace amecs
- {
- internal class Program
- {
- private const string Ver = "2.1";
- public static ConsoleTUI.Frame Frame;
- [STAThread]
-
- public static void Main(string[] args)
- {
- ConsoleTUI.Initialize("Central AME Script");
-
- try
- {
- NSudo.GetSystemPrivilege();
- if (!WindowsIdentity.GetCurrent().IsSystem)
- throw new Exception("Identity did not change.");
- NSudo.RunAsUser(() =>
- {
- Globals.Username = WindowsIdentity.GetCurrent().Name.Split('\\').Last();
- Globals.UserDomain = WindowsIdentity.GetCurrent().Name.Split('\\').FirstOrDefault();
- Globals.UserSID = WindowsIdentity.GetCurrent().User.ToString();
- });
- try
- {
- Globals.UserFolder = Registry.Users.OpenSubKey(Globals.UserSID + "\\Volatile Environment").GetValue("USERPROFILE").ToString();
- } catch (Exception e)
- {
- Console.WriteLine(Globals.Username);
-
- ConsoleTUI.ShowErrorBox($"Could not fetch user folder information from user with SID '{Globals.UserSID}': " + e, "Central AME Script");
- Environment.Exit(1);
- }
-
- PrincipalContext context = new PrincipalContext(ContextType.Machine);
-
- PrincipalSearcher userPrincipalSearcher = new PrincipalSearcher(new UserPrincipal(context));
- Globals.User = userPrincipalSearcher.FindAll().FirstOrDefault(x => (x is UserPrincipal) && x.Sid.Value == Globals.UserSID) as UserPrincipal;
-
- PrincipalSearcher groupPrincipalSearcher = new PrincipalSearcher(new GroupPrincipal(context));
- Globals.Administrators = groupPrincipalSearcher.FindAll().FirstOrDefault(x => (x is GroupPrincipal) && x.Sid.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid)) as GroupPrincipal;
- } catch (Exception e)
- {
- ConsoleTUI.ShowErrorBox("Could not acquire System privileges: " + e, "Central AME Script");
- Environment.Exit(1);
- }
-
- Frame = new ConsoleTUI.Frame($"| Central AME Script v{Ver} |", false);
- Frame.Open();
-
- while (true)
- {
- Globals.UserElevated = Globals.User.IsMemberOf(Globals.Administrators);
-
- Frame.Clear();
- bool usernameRequirement = new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System",
- ValueName = "dontdisplaylastusername",
- Data = 1,
- }.IsEqual();
- bool autoLogonEnabled = new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon",
- ValueName = "DefaultUsername",
- Data = Globals.Username,
- }.IsEqual() &&
- new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon",
- ValueName = "AutoAdminLogon",
- Data = "1",
- }.IsEqual();
- bool netInstalled = new Reg.Key()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5",
- Operation = RegistryOperation.Add
- }.IsEqual();
-
- var mainMenu = new Ameliorated.ConsoleUtils.Menu()
- {
- Choices =
- {
- new Menu.MenuItem("Change Username or Password", new Func<bool>(UserPass.ShowMenu)),
- new Menu.MenuItem("Change Lockscreen Image", new Func<bool>(Lockscreen.ChangeImage)),
- new Menu.MenuItem("Change Profile Image", new Func<bool>(Profile.ChangeImage)),
-
- Globals.UserElevated ?
- new Menu.MenuItem( "De-elevate User", new Func<bool>(Elevation.DeElevate)) :
- new Menu.MenuItem("Elevate User to Administrator", new Func<bool>(Elevation.Elevate)),
- usernameRequirement ?
- new Menu.MenuItem( "Disable Username Login Requirement", new Func<bool>(UsernameRequirement.Disable)) :
- new Menu.MenuItem("Enable Username Login Requirement", new Func<bool>(UsernameRequirement.Enable)),
- autoLogonEnabled ?
- new Menu.MenuItem( "Disable AutoLogon", new Func<bool>(AutoLogon.Disable)) :
- new Menu.MenuItem("Enable AutoLogon", new Func<bool>(AutoLogon.Enable)),
- new Menu.MenuItem("Manage Language Settings", new Func<bool>(Languages.ShowMenu)),
- new Menu.MenuItem("Manage Users", new Func<bool>(Users.ShowMenu)),
- !netInstalled ?
- new Menu.MenuItem("Install .NET 3.5", new Func<bool>(_NET.Install)) :
- new Menu.MenuItem("Install .NET 3.5", new Func<bool>(_NET.Install)) {SecondaryText = "[Installed]", SecondaryTextForeground = ConsoleColor.Yellow, PrimaryTextForeground = ConsoleColor.DarkGray},
- Menu.MenuItem.Blank,
- new Menu.MenuItem("Uninstall AME", new Func<bool>(Deameliorate.DeAme)),
- new Menu.MenuItem("Extra", new Func<bool>(Extra.Extra.ShowMenu)),
- new Menu.MenuItem("Exit", new Func<bool>(Globals.Exit))
- },
- SelectionForeground = ConsoleColor.Green
- };
-
- Func<bool> result;
- try
- {
- mainMenu.Write();
- result = (Func<bool>)mainMenu.Load();
- } catch (Exception e)
- {
- Console.WriteLine(e);
- Console.ReadLine();
- return;
- }
-
- try
- {
- result.Invoke();
- } catch (Exception e)
- {
- ConsoleTUI.ShowErrorBox("Error while running an action: " + e.ToString(), null);
- }
- }
- }
- }
- }
|