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
相关产品推荐
相关产品推荐

