You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中终止Steam系列进程报错问题及静默执行需求

解决VB.NET中终止Steam相关进程的报错问题

你的报错原因很明确:Process.GetProcessesByName()返回的是Process类型的数组,而不是单个Process对象,数组本身没有Kill()方法,所以直接调用会抛出MissingMemberException。

下面是修正后的代码,同时满足静默终止所有Steam相关进程的需求:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim steamProcesses() As String = {"steamwebhelper.exe", "steam.exe", "steamservice.exe"}
    
    For Each procName As String In steamProcesses
        ' 获取所有同名进程,注意去掉.exe后缀更可靠
        Dim processes = Process.GetProcessesByName(procName.Replace(".exe", ""))
        ' 遍历每个进程实例并尝试终止
        For Each proc In processes
            Try
                ' 先检查进程是否还在运行,避免无效操作
                If Not proc.HasExited Then
                    proc.Kill()
                    ' 可选:等待1秒确保进程彻底退出
                    proc.WaitForExit(1000)
                End If
            Catch ex As InvalidOperationException
                ' 进程已自行终止,静默忽略异常
            Catch ex As System.ComponentModel.Win32Exception
                ' 权限不足或无法终止该进程,静默忽略
            End Try
        Next
    Next
End Sub

关键修正点说明:

  • 移除.exe后缀:Process.GetProcessesByName()不需要带.exe后缀,传入纯进程名更稳定
  • 遍历进程数组:必须对GetProcessesByName返回的每个进程实例单独调用Kill()
  • 异常捕获:添加try-catch块处理进程已退出、权限不足等情况,实现静默执行,避免弹出报错窗口
  • 进程状态校验:用HasExited判断进程存活状态,避免对已终止的进程执行无效操作

内容的提问来源于stack exchange,提问作者smsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:03:22