fix: track Windows local process trees safely

This commit is contained in:
2026-08-20 20:02:55 +03:30
parent 08b43b427a
commit 9c88ea603e
2 changed files with 56 additions and 3 deletions

View File

@@ -90,11 +90,27 @@ function Get-RecordedProcesses {
function Test-RecordedProcess {
param($Record)
$process = Get-Process -Id $Record.Pid -ErrorAction SilentlyContinue
try {
$recordedProcessId = [int]$Record.Pid
if ($recordedProcessId -le 0) { return $false }
$recordedStartTime = if ($Record.StartTimeUtc -is [datetime]) {
$Record.StartTimeUtc.ToUniversalTime()
}
else {
[datetime]::Parse(
[string]$Record.StartTimeUtc,
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::RoundtripKind
).ToUniversalTime()
}
}
catch { return $false }
$process = Get-Process -Id $recordedProcessId -ErrorAction SilentlyContinue
if (-not $process) { return $false }
try {
$actual = $process.StartTime.ToUniversalTime().ToString('o')
return $actual -eq $Record.StartTimeUtc
return $process.StartTime.ToUniversalTime().Ticks -eq $recordedStartTime.Ticks
}
catch { return $false }
}