6

我们正在开发的产品允许用户轻松地将其设置为在计算机启动时自动运行。这很有帮助,因为该产品是我们大多数用户基本工作环境的一部分。
这个功能是在不久前实现的,有一段时间一切都很好,但是当我们开始在 Vista 上测试这个功能时,产品在启动时开始表现得很奇怪。具体来说,我们的产品利用了它在需要服务时启动的另一种产品(我们称之为 X)。实际问题是,只要 X 在登录后立即启动,它就会崩溃或报告与磁盘访问相关的严重错误(即使 X 直接启动 - 不是通过我们的产品也会发生这种情况)。

每当我们通过在注册表的“运行”键中注册产品或在“开始菜单”内的“启动”文件夹中放置它的快捷方式来运行我们的产品时,都会发生这种情况,即使我们在实际运行前延迟了约 20 秒开始运行。当我们将延迟更改为 70 秒时,一切正常。

我们尝试通过在登录后立即手动启动我们的产品(通过双击桌面上的快捷方式)来重现该问题,但无济于事。

现在,在登录后一分钟后正常运行的应用程序怎么可能在登录后立即启动时报告如此严重的错误?

4

2 回答 2

6

这是 Vista 中一个名为“Boxing”的新功能的效果:Windows 有多种机制允许用户/管理员设置应用程序以在 Windows 启动时自动运行。此功能主要用于以下目的之一: 1. 作为用户基本工作环境一部分的程序,因此用户在启动计算机时通常会采取的第一个动作是启动它们。2.各种后台“代理”——skype、messenger、winamp等。

当注册了太多(或太重)的程序以在启动时运行时,最终结果是用户在登录后的前几秒/分钟内实际上无法执行任何操作,这真的很烦人。附带 Vista 的“拳击”功能:

简而言之,Vista 强制所有通过 Run 键调用的程序在登录后的前 60 秒内以低优先级运行。这会影响I/O 优先级(设置为非常低)和 CPU 优先级。非常低优先级的 I/O 请求不通过文件缓存,而是直接进入磁盘。因此,它们比常规 I/O 慢得多。装箱期的长度由注册表值设置:“HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DelayedApps\Delay_Sec”。

有关更详细的说明,请参见此处此处

于 2008-08-19T06:43:55.987 回答
0

该程序可能需要将更多信息放入其属性中。它需要“运行方式”,而不仅仅是运行。

也许应该将此应用程序开发为服务,而不是要启动的程序,或者您可以让服务在确定最佳机会窗口时启动程序。

于 2008-08-19T14:46:37.683 回答