Чтобы ответить на ваш вопрос, как есть, нет способа «временно» подняться. Приложение должно быть запущено с запросом на повышение прав.
Как правило, если приложение обычно не требует повышения прав, вы отключаете функциональность, которая требует повышения, в режим, управляемый переключателем, а затем запускаете себя с глаголом runas.
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = Application.ExecutablePath;
startInfo.Arguments = "-doSomethingThatRequiresElevationAndExit";
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
p.WaitForExit();
}
catch(System.ComponentModel.Win32Exception ex)
{
return;
}
Но вы можете захотеть разместить настройки конфигурации, которые пользователь может захотеть изменить как пользовательские, чтобы конфигурация находилась в каталоге appData
, таким образом, не требуя повышения прав.