【问题标题】:Refresh windows explorer in order toolbar to disappear刷新 Windows 资源管理器以使工具栏消失
【发布时间】:2010-03-29 12:48:32
【问题描述】:

我在 C# 中创建了一个 Windows 资源管理器工具栏。卸载我的应用程序时删除了此工具栏,但在取消注册后仍会显示(缓存在 explorer.exe 中)。 explorer.exe 需要重新启动才能使工具栏消失。如何通过 C# 代码解决此问题?

【问题讨论】:

  • 你不应该在 .NET 中编写扩展

标签: c# toolbar windows-explorer


【解决方案1】:

如果不要求用户注销,真的没有办法干净地做到这一点。

如果有关闭工具栏的程序访问,您可以将一些代码注入每个加载了您的 dll 的资源管理器进程并关闭工具栏,然后调用 CoFreeUnusedLibraries(仍然有点 hacky,但您不必杀死进程)

【讨论】:

    【解决方案2】:

    如果工具栏被正确卸载,我不确定资源管理器是否会缓存工具栏。我对这些事情知之甚少,但您确定您没有错过安装程序中的取消注册调用吗?

    【讨论】:

      【解决方案3】:
      foreach(Process p in Process.GetProcesses()){
      
      try{
      
      if(p.MainModule.ModuleName.Contains("explorer") == true)p.Kill();
      
      }
      catch(Exception e){}
      
      Process.Start("explorer.exe");
      
      }
      

      试一试。

      【讨论】:

      • 这不是一个好的解决方案,因为重新启动 explorer.exe 将关闭所有用户窗口。我想要刷新而不是重新启动。
      • 您特别说“explorer.exe 需要重新启动才能消失”,所以我给了您重新启动它的代码。在你回答之前,请把你的问题更清楚。
      • 我认为您没有正确理解问题的标题。消失的工具栏不是 explorer.exe。在发布答案之前,请仔细阅读该问题。
      • 无论如何,Dremation,你的解决方案是有缺陷的:你也会杀死“GameExplorer.exe”和“ProcessExplorer.exe”和“ArentExplorersGreat.exe”。最重要的是,您忽略了所有异常(可怕的做法),并且您的范围位于错误的位置,因此您实际上会为用户机器上的 每个进程 启动一个新的资源管理器实例.错误的答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多