I am using an mdb database. I had the exact issue you have, adding the
logout time to the same record as the login time. My solution was to store
the autonum from the mdb record in the user's registry then read it at
logout and look it up in the mdb and enter the logout time. In Access
databases this is very easy, but in SQL Server I had to take a completely
different approad which I had to drop because the logout script took too
long to execute.
The biggest issue I have with my method is security, users have modify
access to the share and database. 
The logout script misses about 1 in 50 logouts. I don't know why.
The mdb has the following fields: ID (Access autonumber), DC (rootDSE),
Computername, Username, Login (time/date), Logout (time/date)
I have login.vbs and logout.vbs:

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Login.vbs
option explicit

On Error Resume Next

DIM strKeyPath, strValueName, strComputer, DC

const HKEY_CURRENT_USER = &H80000001
strComputer = "."

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim UserID, ComputerName, objNetwork
Dim objConn, objRS, AutoNum, Field
Dim fs, a
AutoNum = 0

Set objNetwork = CreateObject("WScript.Network")
Set DC = getObject("LDAP://rootDse";)
DC = DC.Get("dnsHostName")
ComputerName = objNetwork.ComputerName

UserID = objNetwork.UserName

Set objConn = CreateObject("ADODB.Connection")
objConn.Mode = 3

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security
Info=False;Data Source=\\DC1\logins$\logins.mdb"

Set objRS = CreateObject("ADODB.Recordset")
objRS.Open "Logins", objConn, 2, 2

objRS.AddNew
AutoNum = objRS("ID")
objRS("ComputerName") = ComputerName
objRS("UserID") = UserID
objRS("DC") = DC
objRS("TimeIn") = Now

objRS.Update

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing

'''''''''''''''''''''''''''
'''''''''''''''''''''''''''
Dim oReg
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Logins"
strValueName = "autonum"

oReg.CreateKey HKEY_CURRENT_USER,strKeyPath,strValueName
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,AutoNum 
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Logout.vbs
option explicit

On Error Resume Next

Dim UserID, ComputerName, objNetwork
Dim objConn, objRS, AutoNum
Dim a, fs, SQL
Dim strComputer, oReg, strKeyPath,strValueName

const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
        strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Logins"
strValueName = "autonum"

oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,AutoNum 

Set objConn = CreateObject("ADODB.Connection")
objConn.Mode = 3

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security
Info=False;Data Source=\\DC1\logins$\logins.mdb"
Set objRS = CreateObject("ADODB.Recordset")
objRS.Open "Logins", objConn, 2, 2

SQL = "UPDATE Logins SET TimeOut='" & Now & "' WHERE ID = " & AutoNum
objConn.Execute(SQL)

Set objRS = Nothing
objConn.Close
Set objConn = Nothing

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@




-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Paul Wilkinson
Sent: Friday, July 02, 2004 11:21 AM
To: [EMAIL PROTECTED]
Subject: [ActiveDir] Logging User Logon and Logoffs 


Is anyone logging both logion and log offs?   I'm working on a method of 
recording this info for a computer lab environment, and I'd like to see if
someone else is already doing it. I want real time utilization info and I
want to be able to build stats off of it for latter use.

On Cs, you can determine when I person logs on to a client machine, but you
don't know when they log off because that information is only on the client
machine.

Right now I'm running a log on, and log off script to insert a row in SQ
database in the following format:

Computer name, use rid, login, log off

Where either the login, or log off fields are date/time, and the other field
is NULL.


The problem with this approach is that you get logs like this:

computer1, bob, 2004-04-29 14:36:08, NULL
computer1, bob, NULL, 2004-04-29 14:52:34

So I need a way to combine the login/off logs into one roll to be able 
to perform stats.  I'm a SQ novice, so I don't really know a good way of 
doing this besides exporting all of it to a cs, write a script that 
combines them, then export that back to a new database before running stats.





-- 
Paul Wilkinson
865-974-0649
2422 Dunford Hall
OIT Lab Services
University of TN, Knoxville
List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

Reply via email to