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>
Necesita usar el token ExecutionJewelry requestedExecutionLevel
en un manifiesto:
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"
Cree un archivo con el siguiente contenido (para mayor comodidad, puede agregar el archivo al proyecto. Asegúrese de que su
Build Action
seaNone'' 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>
Edite las
Other flags:
del panel de construcción del diálogo de proyectoOther flags:
campo de entrada para incluir lo siguiente:/win32manifest:<ApplicationManifestFile>
. Por ejemplo, en este caso,/win32manifest:App.Exe.manifest
.