Почему CreateProcessAsUser требует интерактивной оконной станции в Vista/Windows 7?
Мне пришлось вникнуть в это, потому что код, который работал нормально в Windows 2003/XP, не работает в Windows 7. Приложение, запущенное с помощью CreateProcessAsUser, завершается ошибкой с кодом ошибки 0xc0000142. Разница между моим старым кодом и тем, который доступен из MSDN при запуске интерактивного клиентского процесса в C++, заключается в том, что я не настраивал привилегии для Window Station и рабочего стола. Я обновил свой код в соответствии с примером, но мне очень хотелось бы понять, какие изменения в более новых Windows сделали выполнение процессов на интерактивной оконной станции требованием?
1 ответ
По крайней мере, часть требований проистекает из изменения для запуска интерактивных процессов в другом сеансе из сервисов. Это было сделано для того, чтобы приложения не могли запускать атаки "осколками" на привилегированные сервисы. Более подробная информация доступна здесь.