Несколько методов уничтожения процессов на основе имени пользователя в Windows

Чтобы завершить процесс на основе имени пользователя в Windows, вы можете использовать различные методы в зависимости от ваших требований. Вот несколько примеров кода:

Метод 1: использование команд списка задач и Taskkill (командная строка)

@echo off
setlocal
set "username=your_username"
for /f "tokens=2 delims=," %%a in ('tasklist /v /fi "username eq %username%" /fo csv ^| findstr /i /r /c:"\".*\"') do (
    taskkill /f /pid %%~a >nul 2>&1
)
endlocal

Этот пакетный сценарий использует команду tasklistдля поиска процессов, принадлежащих определенному имени пользователя, а затем использует команду taskkillдля завершения этих процессов.

Метод 2. Использование PowerShell

$username = "your_username"
Get-WmiObject -Class Win32_Process | Where-Object { $_.GetOwner().User -eq $username } | ForEach-Object { $_.Terminate() }

Этот сценарий PowerShell использует командлет Get-WmiObjectдля получения процессов и их фильтрации по имени пользователя. Затем метод Terminate()вызывается для каждого соответствующего процесса, чтобы завершить его.

Метод 3. Использование C# и пространства имен System.Diagnostics

using System.Diagnostics;
string username = "your_username";
Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
{
    if (process.SessionId != 0 && process.UserName == username)
    {
        process.Kill();
    }
}

Этот код C# извлекает все запущенные процессы с помощью метода Process.GetProcesses()и проверяет имя пользователя и идентификатор сеанса каждого процесса. Если процесс соответствует имени пользователя, он завершается с помощью метода Kill().