Нашей программе когда-то нужна была возможность запускать вторичный процесс elevated из основного процесса со стандартным IL. Было это осуществлено с помощью добавления uiAccess=true в манифест вторичного экзешника, а также подписания его бинарника, и вызова его с помощью ShellExecute. Все работает, но оказалось, что вызов ShellExecute загружает несколько Internet Explorer-овских DLL, таких как urlmon.dll, iertutil.dll итд. Это приводит к тому, что пока наша программа работает, апгрейд Интернет Эксплорера без перезагрузки системы невозможен.
Попробовал вызывать CreateProcess вместо ShellExecute — он возвращает ошибку ERROR_ELEVATION_REQUIRED.
Вопросы — можно ли обойтись без ShellExecute при запуске процесса с повышенными привилегиями?
Как альтернативное решение — можно ли выгрузить "лишние" библиотеки urlmon.dll, iertutil.dll каким либо относительно безопасным способом?