Move UAC handling to context

This commit is contained in:
Manuel Thalmann 2023-07-03 13:44:51 +02:00
parent 84871b2ee0
commit dbc3eeef42
2 changed files with 15 additions and 18 deletions

View file

@ -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();",

View file

@ -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);
}