Запуск dll

  • Автор темы Zdvig
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

Zdvig

Гость
#1
Пишу простенькую программу в виде dll, для записи времени включения и выключения компьютера.
Запускать dll нужно без участия дополнительных программ, кроме самой winlogon.exe (winXP). Для этого используется
автозагрузка dll через реестр: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\

Dll запускается, делает запись, но не выгружается из памяти. Это пол беды. Но при попытки выключения, перезагрузки
или смене пользователя ничего не происходит. Dll как бы не дает разрешение на выход из системы. Как это можно исправить или подправить?

Код программы:
Код:
library suser64;

uses
SysUtils,
windows;

var
S,WD,FileLog:String;
F:System.Text;
aw : Array[0..MAX_PATH] of char;


Procedure GetFP; stdcall;   //определение системной папки System32
begin
GetSystemDirectory(aw, sizeof(aw));
WD:=(StrPas(aw));
FileLog:=WD+'\suser.log';
end;

Procedure SaveFileLogon; stdcall; //сохранение лога при входе в систему (Событие "logon" в разделе реестра выше)
begin
GetFP;
S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
System.Assign(F,FileLog);
If FileExists(FileLog) = false Then Rewrite(F);
Append(F);
WriteLn(F,'Вход: '+S);
System.Close(F);
end;

Procedure SaveFileLogoff; stdcall; //сохранение лога при выходе из системы (Событие "logoff" в разделе реестра выше)
begin
GetFP;
S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
System.Assign(F,FileLog);
If FileExists(FileLog) = false Then Rewrite(F);
Append(F);
WriteLn(F,'Выход: '+S);
System.Close(F);
end;


exports SaveFileLogon,
   SaveFileLogoff;

begin

end.
 
B

Barmutik

Гость
#2
По идее в Ваших функциях нет ничего что могло бы повиснуть ... а логировать действия пробовали ? На чём конкретно повисает ? На каком действии ?
 
G

Guest

Гость
#3
Логировать? Момент вызова процедуры?

Кстати программу запускали, полностью в действии?
 
B

Barmutik

Гость
#4
Да .. на каком конкретно месте подвисает ?

Программу не запускал ...
 
Статус
Закрыто для дальнейших ответов.