paras gupta Ответов: 1

Как я могу убить весь запущенный процесс в VB.NET


Я хочу убить запущенные процессы через vb.net-да.

Я могу получить запущенный pid в richbox, но не могу их убить.

Пожалуйста помочь.

Что я уже пробовал:

Public Class Form1
    Dim port As Object

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Me.Text = "Testing"
    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        RichTextBox1.Text = ""
        Dim activeConnection() As System.Net.NetworkInformation.TcpConnectionInformation = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties.GetActiveTcpConnections
        Dim portList As New ArrayList
        For Each conn As System.Net.NetworkInformation.TcpConnectionInformation In activeConnection
            portList.Add(conn.LocalEndPoint.Port)
        Next
        For Each port In portList
            RichTextBox1.AppendText(port.ToString & vbCrLf)
        Next
        For Each port In portList
            TextBox1.Text = port.ToString & vbCrLf
            MsgBox(TextBox1.Text)
            'Process.GetProcessById(TextBox1.Text).Kill()
        Next
    End Sub

End Class

[no name]

И какое сообщение об ошибке вы получаете, например, с LastError? Скорее всего, "Доступ запрещен".

1 Ответов

Рейтинг:
0

Dave Kreskowiak

То, что вы делаете, крайне наивно. Вы не можете убить системные процессы, и вы не можете убить процессы, которые прослушивают порты, которые вы не запустили.

Кроме того, ArrayList, который вы используете? Да, этой штукой больше никто не пользуется. Вместо этого используйте List<int> :

Dim portList As New List(Of Integer)

А код, который вы закомментировали? Да, никогда не используйте элемент управления для передачи данных в другой фрагмент кода. Элементы управления предназначены для отображения и редактирования данных, а не для передачи данных другим частям кода. Просто получите портид из списка, а не текстовое поле:
Process.GetProcessById(port).Kill()

Проблема с этим заключается в том, что у вас нет этого вызова, завернутого в блок Try/Catch. У вас не будет разрешений на уничтожение большинства процессов, которые вы видите в своем списке, поэтому ловите исключения и игнорируйте те процессы, которые вы не можете убить.


[no name]

Коллекции и Список<int> Очень важен для Q :doh: