2011-10-05 22 views
62

Necesito mi software para poder ejecutarme como administrador en Windows Vista (si alguien lo ejecuta sin permisos administrativos, se bloqueará).¿Cómo solicitar permisos de administrador cuando se inicia el programa?

Al iniciar otro software, el sistema me ha mostrado que "este software se ejecutará como administrador. ¿Desea continuar?" cuando la aplicación estaba tratando de adquirir privilegios administrativos.

¿Cómo solicito privilegios administrativos cuando ejecuto una aplicación C# en Windows Vista?

+4

No olvide que hacer esto solo oculta el problema subyacente, no lo soluciona. Incluso si su programa realmente necesita permisos de administrador, no debería bloquearse si no los recibe. La causa más probable es que no verifique una condición de error después de una llamada al sistema. –

Respuesta

106

Añadir lo siguiente a su archivo de manifiesto:

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

También puede utilizar highestAvailable para el nivel.

mira aquí Incorporación de archivos de manifiesto:

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

PS: Si usted no tiene un archivo de manifiesto, usted puede agregar fácilmente una nueva:

En Visual Studio, haga clic derecho proyecto -> Agregar elemento -> Elegir archivo de manifiesto de aplicación (en General para elementos de Visual C#)

El archivo agregado ya tendrá la parte anterior, simplemente cambie el nivel a requireAdministrator de asInvoker

+2

¡Ayúdame mucho en información sobre cómo agregar un archivo de manifiesto!Gracias – swdev

+0

. Vale la pena mencionar que si agrega un Archivo de Manifiesto de Aplicación en VS de esta manera, obtiene una plantilla con muchas otras opciones (como decir que su aplicación solo funciona en Windows 10 y versiones posteriores). Probado en VS2017. –

12

Ponga este XML en un archivo llamado yourexename.exe.manifest:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0> 
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
    <requestedPrivileges> 
     <requestedExecutionLevel level="highestAvailable" /> 
    </requestedPrivileges> 
    </security> 
</trustInfo> 
</assembly> 
0

Para F # Visual Studio 2013 , incluido un archivo de manifiesto que solicite la elevación del administrador utilizando el indicador /win32manifest del compilador de FSharp como se describe a continuación. Por lo tanto, dado un resultado del proyecto llamado "APP.EXE"

  1. crear un archivo con el siguiente contenido (por conveniencia, puede añadir el archivo al proyecto. Asegúrese de que es Build Action es None' and copia a la salida. is .. no copie . By convention such a file is named App.Exe.manifest`. Si necesita uiAccess (interfaz de usuario), el conjunto debe ser un nombre seguro.

    <?xml version="1.0" encoding="utf-8" ?> 
    <asmv1:assembly manifestVersion="1.0" 
        xmlns="urn:schemas-microsoft-com:asm.v1" 
        xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
        xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <assemblyIdentity version="1.0.0.0" name="App" /> 
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
        <security> 
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
         <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
         </requestedPrivileges> 
        </security> 
        </trustInfo> 
    </asmv1:assembly> 
    
  2. Editar el proyecto de diálogo del panel de construcción Other flags: campo de entrada para incluir lo siguiente: /win32manifest:<ApplicationManifestFile>. Por ejemplo, en este caso, /win32manifest:App.Exe.manifest.

Cuestiones relacionadas