2008-08-19 41 views
6

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

发生这种情况时,我们通过在注册表中的“运行”键注册,或一个快捷方式放到它在“启动”文件夹中的“开始菜单”内运行我们的产品,甚至当我们把在实际开始运行之前延迟约20秒。当我们将延迟改为70秒时,一切都很好。

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

现在,在登录后立即启动时,如何在登录后一分钟运行正常的应用程序报告此类硬错误?

回答

6

这是在Vista中称为“拳击”的新功能的效果: 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”。

如需更详细的解释见herehere

0

程序可能需要一些更多的信息放入其属性。它需要“运行”,而不是仅仅运行。

也许这个应用程序应该作为一种服务来开发,而不是一个要启动的程序,或者当它确定了最佳的机会窗口时,你可以拥有启动程序的服务。

相关问题