feat: start 时非管理员自动提权重试(注册计划任务需要管理员权限,UAC 确认一次后即可)

This commit is contained in:
luckyyzh
2026-08-03 18:59:03 +08:00
parent 75b8c83ea3
commit 7748c98af6
+14
View File
@@ -72,6 +72,12 @@ function Ensure-Tasks {
-Settings $settings -Description 'Pi Agent Integrated public tunnel' -Force | Out-Null -Settings $settings -Description 'Pi Agent Integrated public tunnel' -Force | Out-Null
} }
function Test-IsAdmin {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal]::new($identity)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
function Get-PublicAccessStatus { function Get-PublicAccessStatus {
$webTask = Get-ScheduledTask -TaskName $webTaskName -ErrorAction SilentlyContinue $webTask = Get-ScheduledTask -TaskName $webTaskName -ErrorAction SilentlyContinue
$tunnelTask = Get-ScheduledTask -TaskName $tunnelTaskName -ErrorAction SilentlyContinue $tunnelTask = Get-ScheduledTask -TaskName $tunnelTaskName -ErrorAction SilentlyContinue
@@ -102,6 +108,14 @@ switch ($Action) {
Get-PublicAccessStatus Get-PublicAccessStatus
} }
'start' { 'start' {
# 注册计划任务需要管理员权限;非管理员时自动提权重启
if (-not (Test-IsAdmin)) {
$argList = @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', "`"$PSCommandPath`"", 'start')
if ($NoTunnel) { $argList += '-NoTunnel' }
Write-Host "注册计划任务需要管理员权限,正在提权重启(请确认 UAC 提示)..."
Start-Process -FilePath 'powershell.exe' -Verb RunAs -ArgumentList $argList -WorkingDirectory $projectRoot
exit
}
Ensure-Tasks Ensure-Tasks
if (-not $NoTunnel) { Start-ScheduledTask -TaskName $tunnelTaskName -ErrorAction SilentlyContinue } if (-not $NoTunnel) { Start-ScheduledTask -TaskName $tunnelTaskName -ErrorAction SilentlyContinue }
Start-ScheduledTask -TaskName $webTaskName Start-ScheduledTask -TaskName $webTaskName