diff --git a/scripts/Windows/OS/User.ps1 b/scripts/Windows/OS/User.ps1 index df3b7841..73ffd1ef 100644 --- a/scripts/Windows/OS/User.ps1 +++ b/scripts/Windows/OS/User.ps1 @@ -64,30 +64,14 @@ function New-PersonalUser([Context] $context) } } -function Get-SystemPolicyKey() { - [OutputType([Microsoft.Win32.RegistryKey])] - param() - $keyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"; - return Get-Item "$keyPath"; -} - -function Get-UACState() { - return Get-ItemPropertyValue -Path (Get-SystemPolicyKey).PSPath -Name "EnableLUA"; -} - -function Set-UACState([bool] $value) { - $null = Set-ItemProperty -Path (Get-SystemPolicyKey).PSPath -Name "EnableLUA" -Value [int]$value; -} - function Enable-UACNextLogin([Context] $context) { - Set-UACState $true; + $context.SetUACState($true); $tempTask = "PortValhalla Temp"; $autoLoginName = "PortValhalla AutoLogin Setup"; $uacDisablerName = "PortValhalla UAC Disabler"; $autoLoginTrigger = Get-Random -Maximum 65535; $uacDisablerTrigger = Get-Random -Maximum 65535; - $key = Get-SystemPolicyKey; $context.Set($autoLoginTriggerProperty, $autoLoginTrigger, "DWord"); $context.Set($uacDisablerTriggerProperty, $uacDisablerTrigger, "DWord"); @@ -107,11 +91,11 @@ function Enable-UACNextLogin([Context] $context) { $uacDisablerTrigger, "PortValhalla UAC Disabler", @( - "Set-ItemProperty '$($key.PSPath)' -Name 'EnableLUA' -Value 0 -Type DWord;", "Unregister-ScheduledTask -Confirm:`$false '$autoLoginName';", "Unregister-ScheduledTask -Confirm:`$false '$uacDisablerName';", ". '$PSScriptRoot/../Scripts/Context.ps1';", "`$context = [Context]::new();", + "`$context.SetUACState(`$false);", "`$context.Remove('$autoLoginTriggerProperty');", "`$context.Remove('$uacDisablerTriggerProperty');", "`$context.DeregisterNewUserReboot();", diff --git a/scripts/Windows/Scripts/Context.ps1 b/scripts/Windows/Scripts/Context.ps1 index a3908dc6..aa66a769 100644 --- a/scripts/Windows/Scripts/Context.ps1 +++ b/scripts/Windows/Scripts/Context.ps1 @@ -148,6 +148,11 @@ class Context { $action.Invoke($key); } + [Microsoft.Win32.RegistryKey] GetSystemPolicyKey() { + $keyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"; + return Get-Item "$keyPath"; + } + [Microsoft.Win32.RegistryKey] GetRunOnceKey() { return $this.GetRunOnceKey($null); } @@ -169,6 +174,14 @@ class Context { return $result; } + [bool] GetUACState() { + return [bool](Get-ItemPropertyValue -Path ($this.GetSystemPolicyKey().PSPath) -Name "EnableLUA"); + } + + [void] SetUACState([bool] $value) { + $null = Set-ItemProperty -Path ($this.GetSystemPolicyKey().PSPath) -Name "EnableLUA" -Value [int]$value; + } + [void] RegisterReboot() { $this.RegisterReboot($null); }