【问题标题】:WPF: Kill Windows GUI (explorer.exe) and then restore itWPF:杀死 Windows GUI (explorer.exe) 然后恢复它
【发布时间】:2017-06-05 17:02:21
【问题描述】:

我想要做的是杀死explorer.exe主进程(这将导致以编程方式杀死Windows gui然后再次打开gui。我可以通过手动杀死然后通过taskmanager启动进程来实现,但是我不知道如何从 wpf Visual C# 程序中杀死主资源管理器进程。另外,我尝试从 taskmanager 中杀死它,然后通过以下方式再次启动 windows gui:

var proc = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "explorer.exe",
                    Arguments = "",
                    UseShellExecute = true,
                    CreateNoWindow = true
                }
            };
            proc.Start();

但它只启动一个新的资源管理器窗口,而不是 windows gui。有人可以帮我杀死win gui并用一些代码重新启动它吗?

【问题讨论】:

  • 为什么要这样做?这有点对用户怀有敌意,我不会很高兴使用这样做的应用程序。顺便说一句,“windows gui”是什么意思-打开资源管理器窗口?任务栏?
  • Windows 用户有时可能有理由以编程方式“杀死 Windows gui”,这种情况一直存在于漏洞丰富的游戏中。我从没想过要为自己自动化,可怜。
  • @stuartd 这个应用的主要目的就是这样做

标签: c# wpf windows user-interface explorer


【解决方案1】:

您可以使用以下方法按名称获取进程:

var explorerProcesses = Process.GetProcessesByName("explorer");

然后你可以循环并杀死它们:

foreach(var process in explorerProcesses)
{
    process.Kill()
}

您的程序可能需要以管理员身份运行才能杀死资源管理器,我不确定。

【讨论】:

  • 你第一次是对的,你使用的进程友好名称是explorer,而不是explorer.exevar explorerProcesses = Process.GetProcessesByName("explorer");
  • 哎呀,我的错,对不起!
  • 谢谢!但是如何恢复 GUI?使用我在第一篇文章中提供的代码启动 explorer.exe 只会打开 Windows 资源管理器,并且 GUI(任务栏)仍然没有显示...
  • 但现在我看到它只会重新启动 gui。但我已经找到了解决方案......无论如何,谢谢
【解决方案2】:

我终于找到了解决方案:通过获取进程杀死 explorer.exe 并使用 Kill() 仅重新启动 gui。要完全关闭它,请使用

        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "taskkill.exe",
                Arguments = "/F /IM explorer.exe",
                UseShellExecute = true,
                CreateNoWindow = true
            }
        };
        proc.Start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    相关资源
    最近更新 更多