C# 杀死所有对运行 Windows 不重要的进程

Sal*_*lly 5 c# windows-7 dangerous-request

我有一个申请。如果该应用程序在 15 分钟内未使用,则需要关闭所有其他应用程序(强制关闭)并且计时器再次启动。我不想这样做让 Windows 7 崩溃。到目前为止我有以下内容:

Process me = Process.GetCurrentProcess();
foreach (Process p in Process.GetProcesses())
{
    if (p.Id != me.Id 
        && p.ProcessName != "winlogon.exe" 
        && p.ProcessName != "explorer.exe"
        && p.ProcessName != "System Idle Process"
        && p.ProcessName != "taskmgr.exe"
        && p.ProcessName != "spoolsv.exe"
        && p.ProcessName != "csrss.exe"
        && p.ProcessName != "smss.exe"
        && p.ProcessName != "svchost.exe "
        && p.ProcessName != "services.exe"
    )
    {
        p.Kill();
    }
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是 Windows 死机了(蓝屏)。有什么方法可以关闭所有正在使用的进程,然后希望 Windows 能够生存下来。

Sal*_*lly 2

if (p.Id != me.Id
    && !p.ProcessName.ToLower().StartsWith("winlogon")
    && !p.ProcessName.ToLower().StartsWith("system idle process")
    && !p.ProcessName.ToLower().StartsWith("taskmgr")
    && !p.ProcessName.ToLower().StartsWith("spoolsv")
    && !p.ProcessName.ToLower().StartsWith("csrss")
    && !p.ProcessName.ToLower().StartsWith("smss")
    && !p.ProcessName.ToLower().StartsWith("svchost")
    && !p.ProcessName.ToLower().StartsWith("services")
    && !p.ProcessName.ToLower().StartsWith("lsass")
)
{
    if (p.MainWindowHandle != IntPtr.Zero)
    {
        p.Kill();
    }                          
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效。