Z
Zdvig
Пишу простенькую программу в виде dll, для записи времени включения и выключения компьютера.
Запускать dll нужно без участия дополнительных программ, кроме самой winlogon.exe (winXP). Для этого используется
автозагрузка dll через реестр: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\
Dll запускается, делает запись, но не выгружается из памяти. Это пол беды. Но при попытки выключения, перезагрузки
или смене пользователя ничего не происходит. 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.