Вы можете указать, что новый процесс должен быть запущен с повышенными правами, установив для свойства Verb объекта startInfo значение runas, как показано ниже:
startInfo.Verb = "runas";
Это приведет к тому, что Windows будет вести себя так, как будто процесс был запущен из Проводника с помощью команды меню «Запуск от имени администратора».
Это означает, что появится приглашение UAC, и пользователь должен будет его подтвердить: если это нежелательно (например, потому что это может произойти в середине длительного процесса), вам нужно будет запустить все хост-процесс с повышенными разрешениями на Создание и встраивание манифеста приложения (UAC) , требующий уровня выполнения «наивысший доступный»: это приведет к тому, что приглашение UAC появится, как только ваше приложение будет запущено, и вызовет все дочерние процессы процессы, запускаемые с повышенными разрешениями без дополнительных запросов.
Редактировать: Я вижу, вы только что отредактировали свой вопрос, чтобы заявить, что "runas" не работает для вас. Это действительно странно, как и должно (и делает для меня в нескольких производственных приложениях). Однако выполнение родительского процесса с повышенными правами путем встраивания манифеста должно сработать.