为什么当我使用process.Kill() c#时explorer.exe会自动重启?
本文关键字:exe explorer 重启 process Kill 为什么 | 更新日期: 2023-09-27 18:09:21
我编写了这个小函数,它按名称搜索进程并杀死它:见下面的代码
Process[] procList = Process.GetProcesses();
RegistryKey expKey = Registry.LocalMachine;
expKey = expKey.OpenSubKey(@"SOFTWARE'Microsoft'Windows NT'CurrentVersion'Winlogon", true);
expKey.SetValue("AutoRestartShell", 0);
using (StreamWriter writer = new StreamWriter(@"C:'test'progtemp'Procs1.Txt", true))
{
int i = 0;
foreach (Process procs in procList)
{
writer.WriteLine(string.Format("Process Name {0} -- Process ID {1} -- Session ID {2}", procs.ProcessName, procs.Id, procs.SessionId));
if (procs.ProcessName == "explorer")
{
procList[i].Kill();
}
i++;
}
}
expKey.SetValue("AutoRestartShell", 1);
我很好奇为什么当我告诉它杀死资源管理器时它会自动重启。我怎样才能使它不重新启动,你必须进入任务管理器手动重新启动它?
如果您运行regedit并进入HKLM'SOFTWARE'Microsoft'Windows NT'CurrentVersion'Winlogon,您可以在其中找到一个名为AutoRestartShell的密钥。
设置为0将不允许重新启动explorer.exe。虽然我个人认为这不是最好的主意搅乱注册表,但如果你真的需要,使用注册表。SetValue将该值从代码(文档:https://msdn.microsoft.com/en-us/library/5a5t63w8(v=vs.110).aspx)更改为0
编辑:灵感来自https://technet.microsoft.com/en-us/library/cc939703.aspx
编辑2:在谷歌上挖了一下,得出了下面的结果,这稍微更好地解释了一切:https://superuser.com/questions/511914/why-does-explorer-restart-automatically-when-i-kill-it-with-process-kill