ClickOnce - ejecutar como administrador


Si se armó un setup con ClickOnce, no es posible -por diseño- ejecutarlo como administrador.

Para solucionarlo, agregar esto en el inicio de la aplicación.
Lo que hace basicamente es arrancar un nuevo proceso como administrador, y matar al actual.


private bool IsRunAsAdministrator()
{
var wi = WindowsIdentity.GetCurrent();
var wp = new WindowsPrincipal(wi);

return wp.IsInRole(WindowsBuiltInRole.Administrator);
}

private void Application_Startup(object sender, StartupEventArgs e)
{
if (!IsRunAsAdministrator())
{
    // It is not possible to launch a ClickOnce app as administrator directly, so instead we launch the
    // app as administrator in a new process.
    var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);

    // The following properties run the new process as administrator
    processInfo.UseShellExecute = true;
    processInfo.Verb = "runas";
        
    // Start the new process
    try
    {
        Process.Start(processInfo);
    }
    catch (Exception)
    {
        // The user did not allow the application to run as administrator
        MessageBox.Show("Sorry, this application must be run as Administrator.");
    }

    // Shut down the current process
    Environment.Exit(0);
}
else
{
    // We are running as administrator
        
    // Do normal startup stuff...
}
}



Fuente:
http://antscode.blogspot.com/2011/02/running-clickonce-application-as.html


No hay comentarios:

Publicar un comentario