Estos son los pasos:
1. Retire XPMan
: Retire cualquier referencia a XPMan
componente de su proyecto. XPMan
agrega un manifiesto predeterminado al archivo ejecutable que impide que Windows vea nuestro manifiesto personalizado. No debe preocuparse por XP Theme provisto por XPMan
, la compatibilidad con temas se conserva en el siguiente manifiesto.
2. Cree el manifiesto personalizado: Cree un archivo como Win7UAC.manifest
en el directorio del proyecto (el nombre del archivo realmente no importa). añadir las siguientes líneas a Win7UAC.manifest
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="App" version="3.1.0.0" processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
Usted puede agregar más elementos a este manifiesto. También puede eliminar Microsoft.Windows.Common-Controls
partes para deshabilitar el soporte de tema.
3. Compilar manifiesta a un recurso: Crear un archivo llamado Win7UAC.rc
en el directorio de proyecto que contiene una línea como:
1 24 "Win7UAC.manifest"
Para compilar este archivo, vaya a cmd, punto de proyectar directorio y ejecute comando siguiente:
brcc32.exe Win7UAC.rc
4. Agregar recursos (el manifiesto) al proyecto: Simplemente añadir la siguiente línea en cualquier lugar que desee en uno de los archivos de la unidad del proyecto:
{$R 'Win7UAC.res'}
Un lugar adecuado para añadir esta línea se encuentra en el archivo de proyecto principal (generalmente llamado Project1.dpr
) y debajo de la línea de {$R *.res}
.
5. Reconstruir el proyecto
6. Recuerde siempre que añada componente XPMan a cualquier de unidades de obra, este manifiesto UAC no funcionará correctamente.
El uso de 'highestAvailable', como lo sugieren Cosmin y Sigurdur, da como resultado que el programa se inicie sin derechos de administrador si el usuario no es un administrador. Si su aplicación solo puede hacer un trabajo útil si se ejecuta con derechos de administrador, entonces debe usar 'requireAdministrator' en su lugar. En el caso de que el usuario sea administrador, se mostrará el cuadro de diálogo de elevación de aprobación de UAC. En el caso de que el usuario sea un usuario estándar, se mostrará el cuadro de diálogo de elevación "sobre el hombro" de UAC. –
Además, menciona XP pero no creo que pueda manifestar problemas de derechos de administrador. En XP, si quieres que un usuario estándar ejecute una aplicación como administrador, entonces creo que debes usar 'RunAs'. –
Puede encontrar una solución automática en ** [this] (http://www.delphifeeds.com/go/f/80334?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:%20delphifeeds%20%28DelphiFeeds.com%29) * * artículo. – avra