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