Я использую планировщик задач Windows для запуска программы администратора с повышенными привилегиями, когда пользователь входит в систему. Методика основана на этой статье:

http://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

Примечание. Программа администратора с повышенными привилегиями - это программа автоматического тестирования, которую необходимо запускать от имени администратора для установки программ и выполнения различных тестов. Для некоторых тестов требуются права администратора и доступ к рабочему столу.

Задача настроена на выполнение с приоритетом выше обычного, как описано в этой статье:

https://stackoverflow.com/questions/2427142/is-there-any-way-for-a-win2k8-scheduled-task-to-have-normal-priority-io

Все отлично работает в Windows Vista, Windows 7 и Windows Server 2008.

В Windows 8 и Windows Server 2012 производительность тестовой программы ужасна, обычно на выполнение требуется в 5-10 раз больше времени. Использование ЦП и дискового ввода-вывода очень высоки. Process Hacker ( http://processhacker.sourceforge.net/ ) показывает приоритет ввода-вывода как нормальный, а приоритет страницы как нормальный.

Низкая производительность возникает только в том случае, если тестовая программа запускается планировщиком задач во время входа в систему. Если я остановлю тестовую программу и перезапущу ее, запустив задачу планировщика задач вручную, нормальная производительность восстановится.

Вот некоторые цифры из урезанной версии тестовой программы:

  • Из тестовой программы, запускаемой из входа пользователя: время 37,6 секунды, ошибки страницы 4530, пик WS 17,8M
  • Та же тестовая программа после ручного перезапуска: время 1,1 секунды, ошибки страницы 4383, пик WS 17,7M

Любая помощь будет оценена по достоинству.

answer

Думаю, у меня есть решение проблемы. Похоже, что поведение запланированной задачи в Windows 8 и Windows Server 2012 зависит от того, когда задача запускается относительно последовательности входа в систему.

В моей тестовой задаче была встроена задержка. Задача была запущена в начале последовательности входа в систему, приостановлена ​​на 60 секунд, а затем запустила тестовый запуск. Были испробованы различные задержки, но во всех случаях производительность в Windows 8 и Windows 2012 была ужасной. Примечание. Тестовая задача была запущена при почти чистой установке Windows, поэтому 60 секунд было более чем достаточно, чтобы пройти последовательность входа в систему.

Я изменил тестовую задачу, чтобы удалить встроенную задержку, и вместо этого использовал функцию задержки запуска планировщика задач. В Windows 8 и Windows Server 2012 тестовая задача настроена на запуск через 60 секунд после входа в систему. После этого изменения тестовая задача работает нормально.

Я искал в документации MSFT объяснение такого поведения, но пока ничего не нашел.

Большое спасибо @ charleswj81, @MDMarra и @Daniel Goldberg. Ваши комментарии помогли мне взглянуть на проблему с разных сторон и в конечном итоге найти способ ее обойти.