{
I wrote a similar little program, to register who are using a particular
program on the network. I think you can get the same done using a
simple batch file system - since this is only for statistical information.
I would use the following batch commands in STUDENT.BAT:
LOGIN %1
REGISTER H:\wherever\LOG.REG %1

It assumes your login script makes an enviroment variable called
NAME=usersname
But used like above it doen't matter.
Call STUDENT.BAT with
STUDENT studentloginname

All that register.exe needs to do is to take it's parameter, add a date and
time stamp (GetDate & GetTime) and writeln everything to a text file.

Yes, there is no protection again normal, unregistered logins, but then that
is not what you asked for?
BTW, I edited it a bit in the mailer - there may be a sintax error...

Cheers,
Harry.
{------------------------------------------------------------------------}
program Register;
{   Used to register users of a program. }
uses Dos;
var
   F:text;
   FN,Remark:string;
   YY,MM,DD,DOW,H,M,S,ss,Retry:word;

function D0(i:word):string;
   var S:string;
   begin
      str(I,S);
      if length(S)=1 then S:='0'+S;
      D0:=S;
   end;

begin
   if ParamCount<1 then begin
      writeln('Use: REGISTER  path\filename.REG  remark');
      writeln('   where path\file.REG is a text file where the user will be logged.');
      writeln('   The user must have read/write access to this path.');
      writeln('   The remark can be anything, ex.: "logging_in" or "logging_out"');
   end else begin
      FN:=ParamStr(1);
      if ParamCount>=2 then Remark:=paramstr(2) else Remark:='';
      if copy(FN,length(FN)-3,4)<>'.REG' then
         writeln('Invalid log file: ',FN)
      else begin
         assign(F,ParamStr(1));
         {$I-}
         if FSearch(ParamStr(1),'')<>ParamStr(1) then rewrite(F);
         retry:=255;
         repeat append(F); dec(retry); until (retry=0) or (IOResult=0);
         {This is only for if the program tries to register two users at
          the same time}
         if IOResult<>0 then begin
            writeln('Log file not found/accesable.');
            halt;
         end;
         {$I+}
         GetDate(YY,MM,DD,DOW);
         GetTime(H,M,S,ss);
         writeln(F,D0(YY),'/',D0(MM),'/',D0(DD),', ',
                   D0(H),'h',D0(M),':',D0(S),',  ',
                   GetEnv('NAME'),',  ',Remark);
         close(F);
      end;
   end;
end.