Вы не можете повысить разрешения процесса во время его выполнения. Обычный способ обойти это - порождать новый процесс с повышенными правами доступа, когда это необходимо. Затем этот процесс выполняет работу, которая требует более высоких привилегий, а затем завершает свою работу, возвращая управление обратно основному процессу. Вы должны быть в состоянии сделать его достаточно плавным, установив родительское окно новых процессов в главное окно процесса.
Другой вариант - перезапустить основную программу с необходимыми разрешениями.
Есть статья о UAC в Vista с примерами на С ++ , которая выглядит довольно подробно.