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
highestAvailablepara 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
requireAdministratordeasInvokerfuente
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
requestedExecutionLeveltoken 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
/win32manifestsiguiente 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 ActionseaNone' andCopiar a salida ...isNo copie. By convention such a file is namedApp.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