Sé que esto es antiguo, pero me encontré con él buscando respuestas. En mi caso, estoy usando la función de publicación y necesito seguir usándola. También necesito acceso a las capacidades de administración. Entonces, por esa razón, ninguna de las respuestas anteriores funcionó para mí.
Terminé agregando un método al inicio de mi aplicación que verifica si se está ejecutando como administrador y, si no lo está, se reinicia como administrador. Para hacer esto, necesita agregar las siguientes referencias.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
Luego, deberá poner esto en algún lugar al que su método principal tenga acceso útil. Estoy usando WPF, así que lo agregué a MainWindow.xaml.cs, pero puede agregarlo en cualquier lugar al principio de su código. Solo recuerde agregar "estático" a estos métodos si lo necesita.
private void AdminRelauncher()
{
if (!IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().CodeBase;
proc.Verb = "runas";
try
{
Process.Start(proc);
Application.Current.Shutdown();
}
catch(Exception ex)
{
Console.WriteLine("This program must be run as an administrator! \n\n" + ex.ToString());
}
}
}
private bool IsRunAsAdmin()
{
try
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (Exception)
{
return false;
}
}
Por último, al inicio de su programa, agregue una referencia al método. En mi caso, lo agregué a MainWindow, pero agregarlo a Main también funciona.
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
¡Espero que esto ayude!
requireAdministrator
permisos y ClickOnce comenzó a quejarse de que no es compatiblerequireAdministrator
. El problema debería ser extremadamente claro. ClickOnce está viendo la necesidad de elevación en su manifiesto (que se convierte en parte de su aplicación). No estoy seguro de qué más necesitas aquí ...