Allow registering reboot for the default user
This commit is contained in:
parent
ec7fc8dd6e
commit
29e2703162
|
@ -1,10 +1,12 @@
|
|||
using namespace Microsoft.Win32;
|
||||
|
||||
$null = New-Module {
|
||||
. "$PSScriptRoot/../Scripts/Registry.ps1";
|
||||
. "$PSScriptRoot/../../Common/Scripts/Config.ps1";
|
||||
. "$PSScriptRoot/../../Common/Scripts/Scripting.ps1";
|
||||
[RegistryKey] $key = $null;
|
||||
$runOncePath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce";
|
||||
$runOncePath = "Software\Microsoft\Windows\CurrentVersion\RunOnce";
|
||||
$systemRunOncePath = "HKLM:\$runOncePath";
|
||||
$logonPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
|
||||
$runOnceName = "PortValhalla";
|
||||
$autologinOption = "AutoAdminLogon";
|
||||
|
@ -17,7 +19,23 @@ $null = New-Module {
|
|||
Gets the reghistry key containing the `RunOnce` commands.
|
||||
#>
|
||||
function Get-RunOnceKey {
|
||||
Get-Item $runOncePath;
|
||||
param(
|
||||
[RegistryKey] $UserKey
|
||||
)
|
||||
|
||||
[string] $path = $null;
|
||||
|
||||
if ($UserKey) {
|
||||
$path = "$($UserKey.PSPath)\$runOncePath";
|
||||
} else {
|
||||
$path = $systemRunOncePath;
|
||||
}
|
||||
|
||||
if (-not (Test-Path $path)) {
|
||||
New-Item $path;
|
||||
} else {
|
||||
Get-Item $path;
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
|
@ -29,10 +47,23 @@ $null = New-Module {
|
|||
#>
|
||||
function Register-Setup {
|
||||
param(
|
||||
[Parameter(ParameterSetName="System")]
|
||||
[switch] $System,
|
||||
[Parameter(ParameterSetName="User",Mandatory)]
|
||||
[switch] $User,
|
||||
[Parameter(Mandatory)]
|
||||
[RegistryKey] $UserKey
|
||||
)
|
||||
|
||||
if ($User.IsPresent) {
|
||||
if (-not $UserKey) {
|
||||
$UserKey = Get-Item "HKCU:\";
|
||||
}
|
||||
|
||||
$key = Get-RunOnceKey $UserKey;
|
||||
} else {
|
||||
$key = Get-RunOnceKey;
|
||||
}
|
||||
|
||||
Set-ItemProperty -Path $key.PSPath -Name $runOnceName -Type "ExpandString" -Value (
|
||||
"pwsh -Command " +
|
||||
|
@ -106,7 +137,24 @@ $null = New-Module {
|
|||
Reboots the machine intermediately and restarts the setup after the next login.
|
||||
#>
|
||||
function Restart-Intermediate {
|
||||
Register-Setup;
|
||||
param(
|
||||
[switch] $DefaultUser
|
||||
)
|
||||
|
||||
$register = { param($Key) Register-Setup -UserKey $Key; };
|
||||
|
||||
if ($DefaultUser) {
|
||||
Edit-DefaultUserKey {
|
||||
param(
|
||||
[RegistryKey] $Key
|
||||
)
|
||||
|
||||
& $register -Key $Key;
|
||||
}
|
||||
}
|
||||
|
||||
& $register;
|
||||
Read-Host "Press enter to reboot";
|
||||
Restart-Computer -Force;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue