Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   HKEY_LOCALMACHINE...Run arranca la app pero no funciona (https://www.clubdelphi.com/foros/showthread.php?t=69549)

VictorVG 25-08-2010 04:55:07

HKEY_LOCALMACHINE...Run arranca la app pero no funciona
 
Buenas,
Tengo un problemilla con una aplicación que funciona perfectamente si la ejecuta el usuario, pero que no funciona al iniciar en "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" cuando arranca el PC.
El caso es que aparece en el "Administrador de tareas", pero no realiza ningún trabajo. La aplicación no tiene ningún form o ventana asociada, pero como digo funciona perfectamente si la ejecuta el usuario.
He probado con esta pequeña aplicación y tampoco funciona (solo funciona si la ejecuta el usuario):

Código Delphi [-]
program Test;
uses Windows, SysUtils;
{$R *.RES}
var
  aux: integer;
  hf: THandle;
  t: string;
  written: Cardinal;
begin
  hf := CreateFile('TestLog.txt', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  try
    //Para que se pueda ver durante 1 minuto en el administrador de tareas
    for aux := 1 to 60 do begin
      Sleep(1000); 
      t := DateTimeToStr(Now) + #13#10;
      WriteFile(hf, t[1], Length(t), written, nil);
    end;
  finally
    CloseHandle(hf);
  end;
end.

Si compilais y lo poneis en el registro para que inicie, podreís comprobar, que arranca, está 1 minuto en el "Administrador de tareas" y no escribe nada en archivo.
Pero sin embargo funciona perfectamente cuando es el usuario quien la ejecuta.
Otra cosa, si la sustituyo por una app con Form si que me funciona. Ah! También he probado mover la clave a HKCU y nada.

¿Se le ocurre a alguien que puede estar pasando??

Un saludo y gracias anticipadas.
VictorVG

egostar 25-08-2010 05:42:19

Prueba crando un Acceso directo de la applicación y ese acceso ejecutarlo en la clave "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" en lugar de la aplicación.

saludos

VictorVG 25-08-2010 21:59:57

Gracias por responder egostar!
No he probado lo que me comentas porque lo he solucionado ya poniendo la ruta completa al archivo.
Cuando arrancaba haciendo doble click todo funcionaba porque el directorio de trabajo era el mismo para la aplicación y para los archivos que utilizo.
Pero al ejecutarse desde el registro el directorio de trabajo es "C:\Documents and Settings\Usuario\Application Data", así que es ahí donde estaba escribiendo todo.
He puesto la ruta completa a todos los archivos y funciona bien.

Muchas gracias por tu ayuda,
VictorVG

egostar 26-08-2010 00:06:04

Cita:

Empezado por VictorVG (Mensaje 374522)
Gracias por responder egostar!
No he probado lo que me comentas porque lo he solucionado ya poniendo la ruta completa al archivo.
Cuando arrancaba haciendo doble click todo funcionaba porque el directorio de trabajo era el mismo para la aplicación y para los archivos que utilizo.
Pero al ejecutarse desde el registro el directorio de trabajo es "C:\Documents and Settings\Usuario\Application Data", así que es ahí donde estaba escribiendo todo.
He puesto la ruta completa a todos los archivos y funciona bien.

Muchas gracias por tu ayuda,
VictorVG

Precisamente por eso es que ayuda el acceso directo, porque contiene el directorio de trabajo, el asunto es que si cambias de ubicación tu programa, tienes que hacerlo también en el registro de windows.

saludos


La franja horaria es GMT +2. Ahora son las 20:14:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi