2010-03-12 10 views

Respuesta

11

Puede informar a Windows que su aplicación necesita ejecutarse como administrador utilizando el elemento requestedExecutionLevel en el manifiesto de su aplicación.

El archivo de manifiesto es un archivo XML que se ve de la siguiente manera. Debe llamarse YourApp.exe.manifest y colocarse en la misma carpeta que el ejecutable. (También puede ser incrustado en los recursos de su aplicación, sino que debe tener un tipo de recurso de RT_MANIFEST y un ID de 1.)

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="YourApp" type="win32"/> 
    <description>Description of your application</description> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

Para más detalles sobre manifiestos de aplicación y cómo crearlos, consulte al Create and Embed an Application Manifest (UAC) MSDN.

Tenga en cuenta que el manifiesto solo es respetado por Windows Vista y posterior. Si su usuario se está ejecutando como un usuario estándar en Windows XP, su aplicación no se iniciará como administrador; Es posible que necesite escribir un código para detectar esto si se trata de un problema para su aplicación.

+0

intenté con su solutino utilizando una nueva aplicación VCL Forms en delphi xe2, creando un archivo txt con el contenido que puso arriba desde , incrustado en forzar recursos ID = 1 y RT_MANIFEST tipo de anuncio, compilo pero luego, al ejecutarlo, no ocurre nada, ¿debería esperar que Windows me obligue a ejecutarlo como administrador? – LaBracca

+0

@ user193655: ¿Has desactivado el UAC? Si es así, Windows no le pedirá que eleve. De lo contrario, los pasos que describió suenan correctos. Probablemente sería mejor publicar todos los detalles como una nueva pregunta; puede haber algún problema específico de Delphi sutil (que yo desconozca) que otros usuarios de Delphi podrían responder por usted. –

+0

@BradleyGrainger: ¿desde dónde estamos en UAC? –

2

Otra opción, aunque no recomendada para "aplicaciones diarias", es nombrar su ejecutable con "Instalar" o "Configurar" como parte del nombre. Tenga en cuenta que si no cambia ninguna configuración de registro o crea archivos nuevos, Windows mostrará una advertencia al usuario de que el programa podría no haberse ejecutado correctamente.

Cuestiones relacionadas