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

如何终止非Windows标准进程?现有脚本误杀系统进程引发蓝屏

解决Windows进程误杀问题:只终止非系统标准进程

你的脚本问题很典型——直接一刀切杀掉除自身外的所有进程,必然会命中csrss.exe、svchost.exe、winlogon.exe这类Windows核心系统进程,强制终止它们肯定会触发蓝屏故障。

要实现只终止非Windows标准进程,核心思路是通过进程的可执行文件路径识别系统进程:Windows自带的系统进程几乎都位于C:\Windows或其下属的System32、SysWOW64目录中。下面是修改后的代码,附带详细逻辑说明:

using System;
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        Process self = Process.GetCurrentProcess();
        // 获取Windows系统根目录,统一转小写避免路径大小写差异问题
        string windowsRootDir = Environment.GetFolderPath(Environment.SpecialFolder.Windows).ToLowerInvariant();

        foreach (Process p in Process.GetProcesses())
        {
            // 跳过当前脚本自身进程
            if (p.Id == self.Id)
                continue;

            bool isSystemProcess = false;
            try
            {
                // 获取进程的可执行文件完整路径
                string processExePath = p.MainModule.FileName.ToLowerInvariant();
                
                // 判断路径是否属于Windows系统目录范围
                if (processExePath.StartsWith(windowsRootDir))
                {
                    isSystemProcess = true;
                }
            }
            catch (Exception)
            {
                // 部分核心系统进程受系统保护,无法读取其MainModule信息
                // 这类进程直接判定为系统进程,避免误杀
                isSystemProcess = true;
            }

            // 仅终止非系统进程
            if (!isSystemProcess)
            {
                try
                {
                    p.Kill();
                    Console.WriteLine($"已终止进程: {p.ProcessName} (ID: {p.Id})");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"无法终止进程 {p.ProcessName} (ID: {p.Id}): {ex.Message}");
                }
            }
        }
    }
}

关键逻辑拆解:

  • 系统目录校验:用Environment.SpecialFolder.Windows动态获取Windows根目录,避免硬编码路径导致的兼容性问题,通过路径前缀判断进程是否属于系统范畴。
  • 异常防护:针对无法读取信息的系统进程直接标记为系统进程,避免因权限问题导致脚本崩溃或误杀核心进程。
  • 终止容错:终止进程时添加异常捕获,处理权限不足、进程已退出等特殊情况,保证脚本稳定性。

额外提示:

  • 少数第三方程序可能会将文件放在System32目录(比如部分驱动辅助工具),如果需要排除这类进程,你可以维护一个自定义白名单,手动添加进程名或路径。
  • 运行脚本需要管理员权限,否则很多进程(包括部分用户进程)无法被正常终止。

内容的提问来源于stack exchange,提问作者I love Code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:54:32