【问题标题】:What's the cleanest way to programmatically kill and restart explorer.exe?以编程方式杀死并重新启动 explorer.exe 的最干净的方法是什么?
【发布时间】:2011-02-19 09:49:50
【问题描述】:

大家好,

我正在开发一个 Windows 程序,其安装需要重新启动 explorer.exe。我知道“重新启动计算机以完成安装”是这里的标准方法,但我希望我的安装程序可以让用户选择只重新启动资源管理器,以便他们可以立即开始使用我的程序。最好的方法是什么?当然,我可以找到并终止该进程,但这似乎很恶心。是否有一些技巧可以让 Explorer 认为用户正在注销并干净地关闭?

谢谢!

【问题讨论】:

  • 这正是 Live Mesh 进行更新的方式

标签: windows installation process explorer


【解决方案1】:

这是 MSI 安装吗?

您是否考虑过使用Restart Manager

重新启动管理器将检测哪些进程保持打开的文件/句柄并需要重新启动,并允许您自动停止/启动这些进程而无需重新启动。

【讨论】:

【解决方案2】:

我可以尝试调用 ExitProcess 或 TerminateProcess 来停止 explorer.exe。

【讨论】:

    【解决方案3】:

    我不知道你是否可以实现这个,但我从以下位置下载了 PsTools:

    http://technet.microsoft.com/en-us/sysinternals/bb896649

    然后我编写了以下批处理文件,该文件杀死并执行 explorer.exe 进程:

    pskill explorer.exe
    psexec -d explorer.exe
    exit
    

    您也可以尝试联系 PSTools 的作者 TechNet 网站上的 Mark Russinovich。

    【讨论】:

      【解决方案4】:

      您可以给它发送WM_ENDSESSION 消息。

      这可能会欺骗它认为计算机正在关闭。然后它有望释放所有资源,关闭所有打开的资源管理器窗口等。

      然后当它关闭时,你可以重新启动进程。

      【讨论】:

        【解决方案5】:

        我在这样的后期构建事件中使用 powershell:

        get-process explorer | kill
        

        一般自动重启就好了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-08
          • 1970-01-01
          • 2014-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多