Desde la perspectiva del desarrollador, el UAC de Windows puede ser problemático para algunas partes de su aplicación Delphi, si la aplicación no está siendo ejecutada por un administrador. Una de esas operaciones es escribir en la base de datos del Registro.
usted tiene que "solicitar derechos de administrador" mediante la creación de un archivo de manifiesto de aplicación ....
Windows Vista/7 - Control de cuentas de usuario
usuario Control de cuentas es un componente de seguridad en Windows Vista . UAC permite a los usuarios realizar tareas comunes como no administradores, llamados usuarios estándar en Windows Vista y como administradores sin tener que cambiar de usuario, cerrar sesión o usar Ejecutar como. Para ayudar a evitar que el software malicioso se instale silenciosamente y provoque una infección en toda la computadora, Microsoft desarrolló la función UAC.
Desde la perspectiva del desarrollador las siguientes características UAC son importantes:
Todos los procesos se inician como usuario estándar por defecto un usuario estándar no puede: cambiar los archivos en carpetas Archivos de programa cambiar los archivos en las carpetas de Windows o System32 cambio de registro en HKLM \ Software cambiar la fecha y la hora local de máquinas ... la lista continúa ...
programación de edición del registro para ejecutar su aplicación Delphi en Windows Sta rtup
Al editar mediante programación el Registro de Windows, utilizando el objeto TRegistry, puede iniciar programas "automágicamente" cada vez que se inicie Windows. El procedimiento se puede utilizar a la fuerza "auto-run-on-Windows-arranque" para su aplicación podría ser:
procedure RunOnStartup(const sCmdLine: string; bRunOnce: boolean = false; Remove: Boolean = false) ;
var
sKey: string;
Section: string;
const
ApplicationTitle = ”Your Application TITLE”;
begin
if (bRunOnce) then
sKey := 'Once'
else
sKey := '';
Section := 'Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0;
with TRegIniFile.Create('') do
try
RootKey := HKEY_LOCAL_MACHINE;
if Remove then
DeleteKey(Section, ApplicationTitle)
else
WriteString(Section, ApplicationTitle, sCmdLine) ;
finally
Free;
end;
end;
En Vista/7, si el usuario ejecuta la aplicación no tiene derechos de administrador las el código anterior fallaría, debido a UAC!
Fingiendo UAC Derechos - ¿Cómo Solicitar nivel de ejecución
Incluso si el usuario que ejecuta el código anterior no es un administrador, puede, como desarrollador brazo su aplicación con un tipo especial de recurso incrustado: aplicación archivo de manifiesto Tener el archivo de manifiesto asegurará que el UAC de Vista permita la ejecución de su código.
Estos son los pasos:
crear el archivo XML con el contenido siguiente:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0]
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="YourApplicationExeName"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2]
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Nombre este archivo XML como YourApplicationName.manifest Crear un archivo de texto con el siguiente contenido: 1 24 "YourApplicationName. manifiesto "
Nombre este archivo de texto como YourApplicationName.RC usando la línea de comando ejecute el siguiente comando: brcc 32 YourApplicationName.RC -foYourApplicationName.REC
Esto creará un archivo nuevo recurso llamado YourApplicationName.REC
Copiar este archivo YourApplicationName.REC en la ruta del recurso de su aplicación. Integrar este recurso en el DPR de que la aplicación, ya que al igual que: {$R YourApplicationName.REC}
Finalmente generar la aplicación - que ahora está listo para obtener derechos de administrador en Windows Vista. Nota 1: en los pasos anteriores, reemplace "YourApplicationExeName" con su nombre de aplicación real. Nota 2: Los pasos anteriores crean un archivo de recursos para almacenar dentro del archivo EXE de su aplicación. Más sobre Recursos en aplicaciones Delphi.
leer más en http://delphi.about.com/od/delphitips2009/qt/delphi-vista-registry-run-on-startup.htm
Consejo: Es posible que desee para tratar de desarrollar bajo una cuenta no-poder-usuario. Sí, puede ser un poco molesto a veces, pero de esta manera te aseguras de que las "sorpresas" como las que acabas de encontrar no te golpeen en la cara. Es una política corporativa en muchas tiendas de desarrollo por una buena razón. –
¿Cómo se comportaría su aplicación en Windows 2000 o Windows XP como usuario estándar? Eso lo guiará sobre cómo debe comportarse en Windows Vista o Windows 7 como usuario estándar. –