Cómo forzar una aplicación de WPF para que se ejecute en modo Administrador

Tengo una aplicación de WPF las que el acceso a los servicios de windows, programadores de tareas en el equipo local.
Al implementar esta aplicación WPF y ejecutarlo sin necesidad de «Ejecutar como Administrador» , se produce un error, ya que no es capaz de acceder a los servicios de windows y programadores de tareas en el equipo local. Si me quedo con «Ejecutar como Administrador», funciona correctamente.

¿Cómo puedo hacer que mi aplicación por defecto que se ejecute en modo administrador cuando se despliega en la producción?

InformationsquelleAutor SVI | 2011-03-11

3 Kommentare

  1. 77

    Que usted necesita para añadir un app.manifest. Cambiar el requestedExecutionLevel
    de asInvoker a requireAdministrator. Usted puede crear un nuevo archivo de manifiesto mediante el diálogo agregar archivo, el cambio que se requiere administrador. Asegúrese de que la configuración del proyecto se establece el uso que se manifiestan así. Esto permitirá que usted simplemente haga doble clic en la aplicación y se mostrará automáticamente la elevación si no lo está ya.

    Ver aquí para más información:

    http://msdn.microsoft.com/en-us/library/bb756929.aspx

    EDITAR:
    Para lo que vale, el artículo utiliza VS 2005 y el uso de mt.exe para incrustar el manifiesto. si está utilizando Visual studio 2008+, esto es, construido en. Simplemente abra las propiedades de su Proyecto, y sobre la «Aplicación» de la pestaña puede seleccionar el manifiesto.

    • En este trabajo en Windows 7 así? Hay una nota en la página que trae esta pregunta… En futuras versiones, la única forma de ejecutar una aplicación elevada sea la han firmado un manifiesto de la aplicación que identifica el nivel de privilegio que las necesidades de la aplicación.
    • a partir de ahora – sí – este mismo procedimiento funciona para Windows 7.
    • En este trabajo si puedo instalar mi aplicación en Windows Server 2008 máquinas, que es de donde soy problemas con el funcionamiento de mi aplicación?
    • Sí, va a trabajar en Sever 2008 y Server 2008 R2.
    • VCSJones, he intentado añadir {MyAppliationName}.exe.Archivo de manifiesto para el proyecto y al compilar me da un error que parece muy común. El Error es «ClickOnce no admite la solicitud de nivel de ejecución ‘requireAdministrator’.»
    • Es la aplicación XBAP o ClickOnce implementar?
    • Gracias VCSJones. La solución que funcionó para mí. Tuve que deshabilitar ClickOnce para deshacerse de ese error. Hice esto por ir a propiedades del proyecto, pestaña de seguridad y desactive la opción «Habilitar la configuración de seguridad de ClickOnce» opción.
    • Cuando seleccione la Vista de Configuración de UAC (app.manifiesto) y cambiar <nivel de ejecución solicitado level=»asInvoker» uiAccess=»false» /> a <nivel de ejecución solicitado level=»requireAdministrator» uiAccess=»false» /> me sale un error que dice «Error 6 ClickOnce no admite la solicitud de nivel de ejecución ‘requireAdministrator’. » esto es exacto según la MSDN.
    • ClickOnce directamente no apoyo a un manifiesto que se puede iniciar como administrador. Si usted necesita una aplicación clickOnce para ejecutar como Administrador, usted debe escribir un programa bootstrap para iniciar el otro como elevada.
    • He encontrado varios ejemplos de que el hack alrededor de WPF, en realidad estaba esperando algo que no requieren que el usuario apruebe ejecuta como administrador. Gracias por la respuesta!
    • Puede ser usado en VS2013 Express? Parece que no tiene ningún método de implementación de otros de ClickOnce.

  2. 8
    1. Haga clic derecho en tu proyecto de WPF para agregar nuevo Elemento: «Add->Nuevo Elemento…»
    2. Seleccione «Archivo de Manifiesto de Aplicación» y haga clic en Agregar
    3. Haga doble Clic en el recién creado archivo de manifiesto y cambiar el
    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    a

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    A continuación, la aplicación de WPF se podría ejecutar como Administrador.

  3. 1

    Si no desea que se rompió el Clickonce este código es la mejor solución:

    using System.Security.Principal;
    using System.Management;
    using System.Diagnostics;
    using System.Reflection;
    //Put this code in the main entry point for the application
    //Check if user is NOT admin 
    if (!IsRunningAsAdministrator())
    {
        //Setting up start info of the new process of the same application
        ProcessStartInfo processStartInfo = new ProcessStartInfo(Assembly.GetEntryAssembly().CodeBase);
    
        //Using operating shell and setting the ProcessStartInfo.Verb to “runas” will let it run as admin
        processStartInfo.UseShellExecute = true;
        processStartInfo.Verb = "runas";
    
        //Start the application as new process
        Process.Start(processStartInfo);
    
        //Shut down the current (old) process
        System.Windows.Forms.Application.Exit();
        }
    }
    
    ///<summary>
    ///Function that check's if current user is in Aministrator role
    ///</summary>
    ///<returns></returns>
    public static bool IsRunningAsAdministrator()
    {
        //Get current Windows user
        WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
    
        //Get current Windows user principal
        WindowsPrincipal windowsPrincipal = new WindowsPrincipal(windowsIdentity);
    
        //Return TRUE if user is in role "Administrator"
        return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
    }

    Fundada en: http://matijabozicevic.com/blog/wpf-winforms-development/running-a-clickonce-application-as-administrator-also-for-windows-8

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea