Necesito que mi software pueda ejecutarse como administrador en Windows Vista (si alguien lo ejecuta sin permisos administrativos, se bloqueará).
Al iniciar otro software, he visto un mensaje del sistema como "este software se ejecutará como administrador. ¿Desea continuar?" cuando la aplicación intentaba adquirir privilegios administrativos.
¿Cómo solicito privilegios administrativos cuando ejecuto una aplicación c # en Windows Vista?
c#
windows
windows-7
windows-vista
Arsen Zahray
fuente
fuente
Respuestas:
Agrega lo siguiente a tu archivo de manifiesto:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
También puede utilizar
highestAvailable
para el nivel.Mire aquí sobre cómo incrustar archivos de manifiesto:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
PD: si no tiene un archivo de manifiesto, puede agregar fácilmente uno nuevo:
El archivo agregado ya tendrá la parte anterior, simplemente cambie el nivel
requireAdministrator
deasInvoker
fuente
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>
fuente
Necesitas usar el
requestedExecutionLevel
token en un manifiesto:http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/
fuente
Para F # Visual Studio 2013, incluir un archivo de manifiesto que solicita la elevación del administrador utilizando el indicador del compilador FSharp de la
/win32manifest
siguiente manera funcionó para mí. Entonces, dado un resultado del proyecto llamado "App.Exe"Cree un archivo con el siguiente contenido (para su comodidad, puede agregar el archivo al proyecto. Asegúrese de que
Build Action
seaNone' and
Copiar a salida ...is
No copie. By convention such a file is named
App.Exe.manifest`. Si necesita uiAccess (interfaz de usuario), el ensamblaje 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>
Editar del panel de construcción diálogo proyecto de
Other flags:
campo de entrada para incluir lo siguiente:/win32manifest:<ApplicationManifestFile>
. Por ejemplo, en este caso/win32manifest:App.Exe.manifest
,.fuente