Почему мои автозапускающиеся приложения работают странно в Vista? - PullRequest
6 голосов
/ 19 августа 2008

Продукт, над которым мы работаем, позволяет пользователю легко настроить его на автоматический запуск при запуске компьютера. Это полезно, потому что продукт является частью основной рабочей среды большинства наших пользователей.
Эта функция была реализована не так давно, и некоторое время все было хорошо, но когда мы начали тестировать эту функцию в Vista, продукт начал вести себя очень странно при запуске. В частности, наш продукт использует другой продукт (назовем его X), который он запускает всякий раз, когда ему нужны его услуги. Фактическая проблема заключается в том, что всякий раз, когда X запускается сразу после входа в систему, он дает сбой или сообщает о критических ошибках, связанных с доступом к диску (это происходит, даже если X запускается напрямую - не через наш продукт).

Это происходит всякий раз, когда мы запускаем наш продукт, зарегистрировав его в разделе «Выполнить» в реестре или поместив ярлык для него в папку « Автозагрузка » внутри « Пуск»", даже если мы поставили задержку в ~ 20 секунд перед тем, как начать работать. Когда мы изменили задержку на 70 секунд, все хорошо.

Мы попытались воспроизвести проблему, запустив наш продукт вручную сразу после входа в систему (дважды щелкнув по ярлыку на рабочем столе), но безрезультатно.

Теперь, как это возможно, что приложения, которые обычно работают через минуту после входа в систему, сообщают о таких серьезных ошибках при запуске сразу после входа в систему?

Ответы [ 2 ]

6 голосов
/ 19 августа 2008

Это эффект новой функции в Vista под названием «Бокс»: В Windows есть несколько механизмов, которые позволяют пользователю / администратору настраивать приложения для автоматического запуска при запуске Windows. Эта функция в основном используется для одной из следующих целей: 1. Программы, которые являются частью основной рабочей среды пользователя, так что первое действие, которое пользователь обычно предпринимает при запуске компьютера, - это их запуск. 2. Все виды фоновых «агентов» - скайп, мессенджер, winamp и т. Д.

Когда слишком много (или слишком тяжёлых) программ зарегистрировано для запуска при запуске, конечным результатом является то, что пользователь фактически ничего не может сделать в течение первых нескольких секунд / минут после входа в систему, что может сильно раздражать. В комплект поставки Vista входит «Бокс»:

Вкратце, Vista заставляет все программы, вызываемые с помощью клавиши Run, работать с низким приоритетом в течение первых 60 секунд после входа в систему. Это влияет как на приоритет ввода / вывода (который установлен на очень низкий уровень), так и на приоритет процессора . Запросы ввода-вывода с очень низким приоритетом не проходят через файловый кеш, а направляются непосредственно на диск. Таким образом, они намного медленнее, чем обычный ввод / вывод. Продолжительность периода бокса задается значением реестра: "HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced \ DelayedApps \ Delay_Sec".

Более подробное объяснение см. здесь и здесь

0 голосов
/ 19 августа 2008

Программа, вероятно, нуждается в дополнительной информации, помещенной в ее свойства. Нужно «Запустить как», а не просто запустить.

Возможно, это приложение должно быть разработано как служба, а не как запускаемая программа, или у вас может быть служба, которая запускает программу, когда определяется наилучшее окно возможностей.

...