Разделение - это путь, если приложение иногда не выполняет работу с реестром, а иногда делает. Три ключа для разделения: (1) имеют манифест на втором exe-файле, как говорит Хо, (2) наложить экран на кнопку / элемент меню, чтобы пользователь ожидал повышения, и (3) запустить его с ShellExecute (перед вызывая Start, установите для UseShellExecuteFlag значение true), чтобы использовался манифест.
Однако, прежде чем приступить к разделению вашего приложения, я бы задал два вопроса. Во-первых, используется ли он когда-либо в неадминистративных целях, или каждый пользователь всегда «нажимает на эту кнопку» и его нужно повысить? Если это так, просто поместите манифест администратора в приложение и не делайте его на разделы. Во-вторых, вы обязательно должны написать в эту часть реестра? Не могли бы вы переместить свой ключ к чему-то под HKCU? Если вы можете, тогда вам больше не нужно подниматься, и все становятся счастливее. Я всегда хотел бы сначала рассмотреть эти возможности, так как они означают меньше кода и меньше тестирования, чем разбиение на разделы.