为什么我的自动运行应用程序在Vista上表现得很奇怪?

时间:2008-08-19 06:36:13

标签: windows-vista virtual-pc

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

只要我们通过在注册表中的“运行”键中注册它来运行我们的产品,或者在“启动菜单<”中的“启动”文件夹中放置一个快捷方式,就会发生这种情况。 / em>“,即使我们在实际开始运行之前放置了~20秒的延迟。当我们将延迟改为70秒时,一切都很好。

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

有关更详细的说明,请参阅herehere

答案 1 :(得分:0)

该程序可能需要在其属性中添加更多信息。它需要“Run As”,而不是仅仅运行。

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