Я использую Планировщик задач Windows, чтобы запустить программу администратора с повышенными привилегиями, когда пользователь входит в систему. Методика основана на этой статье:
http://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html
Примечание. Программа администратора с повышенными привилегиями - это программа автоматического тестирования, которую необходимо запускать от имени администратора для установки программ и выполнения различных тестов. Для некоторых тестов требуются права администратора и доступ к рабочему столу.
Задача настроена на выполнение с приоритетом выше обычного, как описано в этой статье:
Все отлично работает в Windows Vista, Windows 7 и Windows Server 2008.
В Windows 8 и Windows Server 2012 производительность тестовой программы ужасна, обычно на выполнение требуется в 5-10 раз больше времени. Использование ЦП и дискового ввода-вывода очень высоки. Хакер процессов (http://processhacker.sourceforge.net/) показывает Приоритет ввода / вывода как Нормальный, а Приоритет страницы как Нормальный.
Низкая производительность возникает только в том случае, если тестовая программа запускается планировщиком задач во время входа в систему. Если я остановлю тестовую программу и перезапущу ее, запустив задачу планировщика задач вручную, нормальная производительность восстановится.
Вот некоторые цифры из урезанной версии тестовой программы:
Любая помощь будет оценена.
Думаю, у меня есть решение проблемы. Похоже, что поведение запланированной задачи в Windows 8 и Windows Server 2012 зависит от того, когда задача запускается относительно последовательности входа в систему.
В моей тестовой задаче была встроена задержка. Задача была запущена в начале последовательности входа в систему, приостановлена на 60 секунд, а затем запустила тестовый запуск. Были испробованы различные задержки, но во всех случаях производительность в Windows 8 и Windows 2012 была ужасной. Примечание. Тестовая задача была запущена при почти чистой установке Windows, поэтому 60 секунд было более чем достаточно, чтобы пройти последовательность входа в систему.
Я изменил тестовое задание, чтобы удалить встроенную задержку, и вместо этого использовал функцию задержки запуска планировщика заданий. В Windows 8 и Windows Server 2012 тестовая задача настроена на запуск через 60 секунд после входа в систему. После этого изменения тестовая задача работает нормально.
Я искал в документах MSFT объяснение такого поведения, но пока ничего не нашел.
Большое спасибо @ charleswj81, @MDMarra и @Daniel Goldberg. Ваши комментарии помогли мне взглянуть на проблему с разных сторон и, в конечном итоге, найти решение.