【问题标题】:Why are my auto-run applications acting weird on Vista?为什么我的自动运行应用程序在 Vista 上表现异常?
【发布时间】:2008-08-19 06:36:13
【问题描述】:

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

每当我们通过在注册表的“运行”键中注册我们的产品或在“开始菜单”,即使我们在实际开始运行之前延迟了约 20 秒。当我们将延迟更改为 70 秒时,一切正常。

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

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

【问题讨论】:

    标签: windows-vista virtual-pc


    【解决方案1】:

    这是 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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 2011-10-01
        相关资源
        最近更新 更多