c# - "ClickOnce no admite el nivel de ejecución de solicitud ''requireAdministrator''".
wpf compiler-errors (9)
Aquí está el fragmento de código para VB.NET
If Not New WindowsPrincipal(WindowsIdentity.GetCurrent).IsInRole(WindowsBuiltInRole.Administrator) Then
Process.Start(New ProcessStartInfo With { _
.UseShellExecute = True, _
.WorkingDirectory = Environment.CurrentDirectory, _
.FileName = Assembly.GetEntryAssembly.CodeBase, _
.Verb = "runas"})
EDITAR: Pero si implementa de esta manera, algunos AV-Software bloquea su código.
Así que estaba escribiendo una aplicación que requiere acceso al registro. No había tocado ninguna configuración de compilación, quería que la cosa funcionara antes de agregar los demás detalles, como una descripción o un nombre.
De la nada, recibo un error que no desaparecerá. ClickOnce does not support the request execution level ''requireAdministrator''.
Ahora, no había tocado ClickOnce en esta aplicación. Todo lo que había hecho era incluir un archivo de manifiesto solicitando estos permisos.
Mi problema ahora es que este error no desaparecerá y no puedo compilar mi programa. ¿Algún consejo sobre qué hacer? (Nota al margen: estoy a punto de ir a la cama, así que lo comprobaré mañana por la tarde).
Echa un vistazo a tu aplicación. Muestra el archivo y verás esto:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Hay instrucciones allí en los comentarios, pero simplemente eliminando el "requireAdministrator" e insertando esto en el lugar resuelto el problema para mí:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
Esta acción se puede lograr seleccionando "Habilitar la configuración de seguridad de ClickOnce" (ya que no se puede "desmarcar" durante una publicación, como se indica) y luego seleccionando "Esta es una aplicación de confianza parcial". La "Intranet local" se seleccionará automáticamente en el menú desplegable, lo que está perfectamente bien.
Guarde sus cambios, publique la aplicación, esquís terminados. :-)
Sé que esta es una vieja pregunta, pero vine aquí dos años después, así que:
Puede desactivar ClicKOnce desde la pestaña Seguridad en las propiedades del proyecto para ayudar con el problema; vea abajo:
Sé que esto es viejo, pero lo encontré en busca de 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 desde el inicio de mi aplicación que comprueba si se está ejecutando como administrador y, de lo contrario, se relanza como administrador. Para hacer esto, necesita agregar las siguientes referencias.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
Luego tendrá que poner esto en algún lugar al que tenga acceso práctico su método principal. Estoy usando WPF, así que lo agregué a MainWindow.xaml.cs pero puedes agregarlo en cualquier lugar desde el principio en tu código. Solo recuerde agregar "estática" 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()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
Por último, al comienzo de su programa, agregue una referencia al método. En mi caso, lo agregué a MainWindow pero también lo agregué a Mainworks.
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!
Si alguna vez usa el asistente de publicación, o ''Publicar ahora'', la casilla de verificación hacer clic una vez se selecciona automáticamente ...
Tengo el mismo problema. Lo resuelvo desmarcando " Habilitar las configuraciones de seguridad de ClickOnce". Para encontrar esta opción en Visual Studio, haga clic con el botón derecho en su Proyecto ==> propiedades ==> Seleccione Seguridad ==> Habilite las configuraciones de seguridad de ClickOnce (Esta opción ya revisado, así que lo desactivé y mi problema se resolvió).
sólo
Imports System.security
y U no obtendrán ningún error y su aplicación se ejecutará como administrador
Editar: Este comentario también da una buena respuesta.
Haga clic una vez para habilitarse cada vez que haga clic en "Publicar", ¡lo quiera o no! Si está utilizando "requireAdministrator", parece que no puede usar ClickOnce y, por lo tanto, no puede "Publicar" su proyecto.
Original:
Resulta que en la pestaña Seguridad, se activó "Habilitar las configuraciones de seguridad de ClickOnce". Aunque no lo verifiqué. De todos modos, desmarcar eso detuvo a ClickOnce y me dio errores. Eso tomó un tiempo para encontrar ...