убить все программы от пользователя x с vb.net - PullRequest
2 голосов
/ 06 апреля 2009

Я пытаюсь убить все процессы указанного пользователя.

я использую

       Try
        Shell("C:\WINDOWS\system32\taskkill.exe /S localhost /U userx /P passwort /f /FI " & Chr(34) & "USERNAME eq userx" & Chr(34))
    Catch ex As Exception
        MessageBox.Show("LogoutException occurred. " + ex.Message)
    End Try

Но ничего не случилось. Если я пытаюсь использовать это taskkill ..... команда за консолью, она работает нормально. одно из приложений, которое должно быть закрыто, является explorer.exe. Все приложения пользователя должны быть закрыты.

Я вставил / u / p, потому что само приложение запускается под другим пользователем.

кто-нибудь знает, как я могу по-настоящему убить все процессы от этого 1 пользователя?

EDIT: я забыл немного информации, Приложение запускается пользователем с правами пользователя. Вот почему я использую TaskKill - там я могу ввести другого пользователя с правами администратора. Вторая проблема в том, что я не могу напрямую использовать process.kill.

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 06 апреля 2009
foreach (Process p in Process.GetProcesses())
{
    if (String.Equals(p.ProcessName, name))
    {
        p.Kill();
    }
}

или

Process.GetProcesses()
.Where(p => String.Equals(p.ProcessName, name))
.First()
.Kill(); // kills only first

или

Process.GetProcesses()
.Where(p => String.Equals(p.ProcessName, name))
.ToList()
.ForEach(p => p.Kill()); // kills all
0 голосов
/ 06 апреля 2009

Если вы знаете идентификатор процесса, вы можете убить его с помощью класса Process. Возьмите этот фрагмент кода, например,

Public Sub KillProcess(id as Integer)
  For Each p as Process in Process.GetProcesses()
    if p.Id = id Then
      p.Kill()
    End If
  Next
End SUb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...