Si quieres permisos… manifiestate!!

Ayer publicaba Rodrigo Corral en su blog, «Si quieres Full Trust… dímelo!!», cómo podíamos requerir al usuario que ejecute un assembly con un determinado nivel de permisos.


Me gustaría añadir otro modo alternativo a los ya comentados por él, basado en el manifest del assembly, que notifica al UAC (User Account Control de Windows Vista) cual es el nivel de permisos que necesita la aplicación para ejecutarse.


Para hacer esto solo tenemos que ir al archivo .exe.manifest de nuestra aplicación y añadir lo siguiente:


<?xml version=»1.0″ encoding=»UTF-8″ standalone=»yes»?>
<assembly xmlns=»urn:schemas-microsoft-com:asm.v1″ manifestVersion=»1.0″>
  <assemblyIdentity version=»1.0.0.0″ processorArchitecture=»X86″ name=»Microsoft.VisualStudio.Shell» type=»win32″></assemblyIdentity>
  <description>Microsoft VisualStudio.NET</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type=»win32″ name=»Microsoft.VC80.CRT» version=»8.0.50608.0″ processorArchitecture=»x86″ publicKeyToken=»1fc8a5a9a1e18e3b»></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type=»win32″ name=»Microsoft.Windows.Common-Controls» version=»6.0.0.0″ processorArchitecture=»X86″ publicKeyToken=»6542c64144ccf1df» language=»*»></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type=»win32″ name=»Microsoft.VC80.ATL» version=»8.0.50608.0″ processorArchitecture=»x86″ publicKeyToken=»1fc8b1a7b1e18e3b»></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns=»urn:schemas-microsoft-com:asm.v3″>
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level=»requireAdministrator»>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Donde el atributo level de la etiqueta requestedExecutionLevel puede tomar los valores:


  • requireAdministrator
  • highestAvaliable
  • asInvoker

Esto hará que se muestre un mensaje en pantalla como este en el caso de no cumplir con las condiciones de seguridad requeridas:


sshot-6

Un comentario sobre “Si quieres permisos… manifiestate!!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *