【问题标题】:kill remote process杀死远程进程
【发布时间】:2014-07-24 18:16:07
【问题描述】:

我使用下面的链接并能够成功设置它: http://www.codeproject.com/Articles/26817/Killing-Processes-from-a-Visual-Basic-Application?msg=4868229#xx4868229xx

我想弄清楚如何在 VB.NET 中查看/杀死远程工作站的进程,而不是在本地?有什么想法吗?

我一直在使用 WMI 进行测试,但似乎无法弄清楚并使其正常工作。

这是我的课程代码:

Public Class Form1
    Public Sub endprocess(ByVal RemotePC As String, ByVal process As String)
        Dim objWMIService As Object
        Dim colProcessList As Array
        Dim objprocess As Object
        Dim response As Boolean
        Dim pcname As String = tbRemoteIP.Text

        objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & pcname & "\root\cimv2")
        process = "'" & process & "'"
        colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & "SDM Offline Tool")
        For Each objprocess In colProcessList
            response = MsgBox("End " & process & " on " & pcname & "?", MsgBoxStyle.YesNoCancel)
            If response = vbYes Then
                objprocess.Terminate()
            Else
                Exit Sub
            End If
        Next
    End Sub

我用下面的按钮调用上面的:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    endprocess("pcname", "SDM Offline Tool")
End Sub

当我尝试在 remotepc (pcname) 上结束 SDM 离线工具进程时遇到 CAST 错误

【问题讨论】:

  • 是的,我看到了:但我怎么称呼它?还是我将该代码放在按钮内?
  • 将此代码粘贴到您的表单类中,然后在您的按钮处理程序中调用endprocess("RemotePC", "process")
  • 我更新了我的代码,你能看看,我还是有问题。
  • 我的第一个猜测是“SDM Offline Tool”不是您的进程的名称。先用“记事本”试试。

标签: vb.net process wmi


【解决方案1】:

试试这个代码,它对我有用“notepad.exe”:

Public Sub endprocess(ipAddress As String, processName As String)
  Dim scope As New ManagementScope("\\" & ipAddress & "\root\cimv2")
  Dim query As New SelectQuery(
    "SELECT * FROM Win32_Process WHERE Name = '" & processName & "'")

  Using searcher As New ManagementObjectSearcher(scope, query)
    Dim queryCollection As ManagementObjectCollection = searcher.[Get]()
    For Each process As ManagementObject In queryCollection
      process.InvokeMethod("Terminate", Nothing)
    Next
  End Using
End Sub

Sub Main()
  endprocess("ipAddress", "notepad.exe")
End Sub

不要忘记添加对System.Management (.NET 4.0) 的引用,并在顶部添加Imports

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多