tutorial servicio services how for example ejemplo create crear c# windows windows-7 windows-vista

servicio - windows services c#



¿Cómo solicitar permisos de administrador cuando se inicia el programa? (4)

Necesito que mi software pueda ejecutarse como administrador en Windows Vista (si alguien lo ejecuta sin permisos administrativos, se bloqueará).

Al lanzar otro software, el sistema me ha avisado 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?


Agregue lo siguiente a su archivo de manifiesto:

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

También puede usar highestAvailable para el nivel.

Mire aquí sobre la incrustación de archivos manifiestos:

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

PD: si no tiene un archivo de manifiesto, puede agregar fácilmente uno nuevo:

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

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


Coloque 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>



Para F # Visual Studio 2013, incluido un archivo de manifiesto que solicite la elevación del administrador utilizando el indicador del compilador de /win32manifest , como se /win32manifest continuación. Entonces, dado un resultado del proyecto llamado "App.Exe"

  1. Cree un archivo con el siguiente contenido (para mayor comodidad, puede agregar el archivo al proyecto. Asegúrese de que su Build Action sea None'' and Copie a la salida ... no lo copie . By convention such a file is named App.Exe. manifest`. Si necesita uiAccess (interfaz de usuario), el conjunto debe tener un nombre fuerte.

    <?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. Edite las Other flags: del panel de construcción del diálogo de proyecto Other flags: campo de entrada para incluir lo siguiente: /win32manifest:<ApplicationManifestFile> . Por ejemplo, en este caso, /win32manifest:App.Exe.manifest .