2008-08-19 3 views
6

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

Это происходит всякий раз, когда мы запускаем наш продукт, зарегистрировав его в ключе «Run» в реестре или поместить ярлык в папку «Startup» внутри «Start Menu», даже когда мы помещаем задержка ~ 20 секунд до фактического начала запуска. Когда мы изменили задержку на 70 секунд, все хорошо.

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

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

ответ

6

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

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

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

Для более подробного объяснения см here и here

0

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

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

Смежные вопросы