为什么不要程序杀死并重新启动explorer.exe?

我知道很多程序,一旦安装(或registry的更新),他们需要一些刷新的价值。 这可以通过杀死并重新启动explorer.exe来完成,但是大多数人不这样做,而是要求你重新启动计算机。 一个需要很长时间的过程。

我目前正在编写一个工具,仅供技术人员使用,它会对需要重新启动(或重新启动explorer.exe)的registry进行一些更改才能生效。 我不必担心我的用户被explorer.exe重新启动吓坏了,所以这不是一个问题。

在做这件事之前还应该考虑什么? 为什么其他应用程序会告诉你重新启动,而不是更快的重启浏览器? 有没有安全原因? 还是仅仅是习惯?

杀死并重新启动资源管理器不会去做一切重启系统的事情:

1)任何当前正在运行的应用程序不会被刷新。

2)这也会导致系统的稳定性问题。 我尤其注意到,在浏览器关闭/重新启动后,我的图形驱动程序无法正确更新。

3)它只是一种气味;)作为安装的一部分杀死一个进程似乎是讨厌的。

我已经看到通知区域中的图标没有显示在浏览器重新启动后(通常在停止响应,我必须杀死它)的问题。

根据通知图标,这可能会导致用户问题。

重新启动Windows是一个经过很好测试的操作。 注销/进入也是如此。 您可以预期所有第三方软件都会通过重新启动进行测试,而且几乎所有的测试都是通过注销,登录进行的。

你觉得有多少是通过杀死和respawn explorer.exe测试? 可能远不及那么多,当然远不及。

所以,如果你正在内部分配,到一个非常好控制的环境,那么确定,继续杀死&respawn explorer.exe。 但不要这样做,因为你把用户的机器进入了一个很差的测试状态,事情可能会神秘地突破,直到他重新启动。

其他更改可能需要不止一次重新启动explorer.exe。 正如你所说,重新启动explorer.exe可能是相当令人震惊的最终用户。

资源管理器可以有未保存的状态(打开的窗口,文件夹视图设置等),如果突然重新启动会丢失)。 我讨厌它,如果安装程序会杀了我的explorer.exe没有问,我不知道我会认为这是一个改进,而不仅仅是重新启动。

在没有通过重新启动explorer.exe处理的事情的列表中,尤其是替换当前正在使用的DLL和程序(不包括explorer.exe),它们不会听取注册表更改事件,但会保存来自那里的信息。

是否总是需要重新启动的资源管理器?

我有一个应用程序曾经安装了应用程序和Perfmon(运行时)应该共享的性能监视器计数器,因此安装应该只是为了确保两个应用程序都关闭了。 简单…除了一个驱动程序(不记得哪一个或我会命名耻辱制造商)加载每个 perfmon对象的DLL,并保持他们都锁定。 因此,我的应用程序需要重新启动。

现在,如果您有一个工具可以确定哪些进程具有哪些待安装的文件被锁定,并提供关闭它们(尽管用户必须决定),那么这些进程中的一个可能对Windows很重要(例如,工作站服务,或者svchost),或者对用户来说很重要(比如Word有一天的未保存的工作)(这可能是一个不好的例子)。

使用重新启动选项,而不是刷新explorer.exe。 已经预料到,大多数安装在Windows上的软件都会重新启动,所以用户习惯于在安装软件时重新启动,并且让他们有机会关闭其他窗口并保存数据。 其次,正如已经指出的那样,重启explorer.exe会空白你当前的屏幕而不会发出警告,并使其看起来好像有什么问题,并且所有的信息都会丢失。

在注册表中有很多事情是在下一次重新启动时发生的, 例如,“RunOnce”键下的条目会在下一次启动时运行一次。 有很多安装应用程序依赖于此行为; 而且由于微软并没有弃用这个功能,或者找到了一个很好的解决方法,所以人们不断地写软件来期待这个功能,并依赖于它。

重新启动浏览器会造成用户当前环境报废的不良后果。 像任务栏按钮,挂起的操作等之类的东西都将被丢失,如果你只是简单地杀死explorer.exe。

为什么不让用户选择是重新启动还是重新启动浏览器。

请记住,一般用户不会知道这意味着什么,所以要确保你的用户真的是“足够的技术”。