【问题标题】:Reopening the taskbar (explorer.exe) after it has been killed?杀死后重新打开任务栏(explorer.exe)?
【发布时间】:2012-03-10 08:27:39
【问题描述】:

我正在编写一个小程序来解决与 16 位程序的兼容性问题。此修复是关闭 explorer.exe,因为 explorer 会覆盖程序中的一些调色板。之后,我们重新打开资源管理器。

当使用 .bat 文件时,它可以工作:

@ECHO OFF
taskkill /f /IM explorer.exe
EmStraditionX.exe
start /B explorer.exe

这种方法并不理想,因为它需要下载额外的文件。为了简单起见,假设我不可能分发比 C# 兼容程序更多的东西。

我的第一个想法是Process.Start("explorer.exe"),但这不起作用,而是在资源管理器窗口中打开了“库”文件夹,而没有让任务栏再次可见。

然后我尝试使用与批处理文件相同的命令,除了这样:Process.Start("cmd.exe", "/C start /B explorer.exe"),它再次不起作用。

有人知道如何从 C# 重新打开任务栏吗?

谢谢, 瑞化。

【问题讨论】:

  • 兼容性问题的答案几乎肯定不是“杀死资源管理器”。您是否查看过兼容性垫片? (也许在应用运行时将配色方案强制恢复为 Aero Basic?)
  • 你说后两种方法都行不通——你试过后发生了什么?有什么发射吗?另外,您是否考虑过摆弄Process.Start 的其他变体(即允许您指定更高级启动选项的变体)?
  • @josh3736:不开玩笑,这是解决办法。我们正在检查程序分配了哪些调色板,并且因为 Windows 7 在不同的(我想假设是模拟的)环境中运行 16 位应用程序,它覆盖了任务栏的第一个应用程序。我们关闭资源管理器的那一刻,程序再次控制了调色板。
  • @Reuben:它只打开“库”文件夹。没有其他的。 bat 文件按预期打开任务栏。

标签: c# windows-7 cmd explorer taskbar


【解决方案1】:

用途:

Process.Start(Environment.SystemDirectory + "\\..\\explorer.exe");

放置完整路径将使其工作

马丁

【讨论】:

    【解决方案2】:

    您是否也在兼容性选项中使用“以管理员身份运行”功能?

    如果您这样做 - 您将从另一个会话启动资源管理器并且您看不到正在其他(管理员)会话中运行的窗口。

    【讨论】:

    • 兼容性程序以管理员身份运行,批处理文件也是如此。
    • 所以你有答案。这就是你看不到资源管理器的原因。您需要以已登录的用户身份启动它。
    • 如果您检查上面的内容,您会注意到指定 explorer.exe 的完整路径是有效的。如果这改变了运行它的用户,那么是的,你是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多