mirror of
https://github.com/FAUSheppy/homelab_gamevault
synced 2025-12-06 06:51:36 +01:00
feat: windows-native admin execution
This commit is contained in:
@@ -71,7 +71,7 @@ def run_exe(path, synchronous=False):
|
||||
subprocess.Popen(path, cwd=os.path.dirname(path))
|
||||
except OSError as e:
|
||||
if "WinError 740" in str(e):
|
||||
p = subprocess.Popen(["python", "adminrun.py", path],
|
||||
p = subprocess.Popen(["powershell", "-ExecutionPolicy", "Bypass", "-File", "windows_run_as_admin.ps1", path],
|
||||
subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
|
||||
print(p.communicate())
|
||||
else:
|
||||
|
||||
27
windows_run_as_admin.ps1
Normal file
27
windows_run_as_admin.ps1
Normal file
@@ -0,0 +1,27 @@
|
||||
param (
|
||||
[string]$Path
|
||||
)
|
||||
|
||||
# Check if running as administrator
|
||||
$CurrentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$Principal = New-Object System.Security.Principal.WindowsPrincipal($CurrentUser)
|
||||
$IsAdmin = $Principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
|
||||
if (-not $IsAdmin) {
|
||||
# Relaunch the script with elevated privileges
|
||||
Start-Process powershell -ArgumentList "-File `"$PSCommandPath`" `"$Path`"" -Verb RunAs
|
||||
exit
|
||||
}
|
||||
|
||||
# Run the process and capture output
|
||||
try {
|
||||
$Process = Start-Process -FilePath $Path -NoNewWindow -PassThru -RedirectStandardOutput output.txt -RedirectStandardError error.txt
|
||||
$Process.WaitForExit()
|
||||
|
||||
# Read and display output
|
||||
Get-Content output.txt
|
||||
Get-Content error.txt | ForEach-Object { Write-Host $_ -ForegroundColor Red }
|
||||
|
||||
} catch {
|
||||
Write-Host "Error running the process: $_" -ForegroundColor Red
|
||||
}
|
||||
Reference in New Issue
Block a user