Option Explicit
Dim objFSO, objLogFile, objNetwork, objShell, strText, intAns
Dim intConstants, intTimeout, strTitle, intCount, blnLog
Dim strUserName, strComputerName, strIP, strShare, strLogFile
strShare = "\\Filesrv\Log_share"
strLogFile = "logon.log"
intTimeout = 20
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = CreateObject("Wscript.Network")
Set objShell = CreateObject("Wscript.Shell")
strUserName = objNetwork.UserName
strComputerName = objNetwork.ComputerName
strIP = Join(GetIPAddresses())
' Log date/time, user name, computer name, and IP address.
If (objFSO.FolderExists(strShare) = True) Then
On Error Resume Next
Set objLogFile = objFSO.OpenTextFile(strShare & "\" _
& strLogFile, 8, True, 0)
If (Err.Number = 0) Then
' Make three attempts to write to log file.
intCount = 1
blnLog = False
Do Until intCount = 3
objLogFile.WriteLine "Logon ; " & Now & " ; " _
& strComputerName & " ; " & strUserName & " ; " & strIP
If (Err.Number = 0) Then
intCount = 3
blnLog = True
Else
Err.Clear
intCount = intCount + 1
If (Wscript.Version > 5) Then
Wscript.Sleep 200
End If
End If
Loop
On Error GoTo 0
If (blnLog = False) Then
strTitle = "Logon Error"
strText = "Log cannot be written."
strText = strText & vbCrlf _
& "Another process may have log file open."
intConstants = vbOKOnly + vbExclamation
intAns = objShell.Popup(strText, intTimeout, strTitle, _
intConstants)
End If
objLogFile.Close
Else
On Error GoTo 0
strTitle = "Logon Error"
strText = "Log cannot be written."
strText = strText & vbCrLf & "User may not have permissions,"
strText = strText & vbCrLf & "or log folder may not be shared."
intConstants = vbOKOnly + vbExclamation
intAns = objShell.Popup(strText, intTimeout, strTitle, intConstants)
End If
Set objLogFile = Nothing
End If
' Clean up and exit.
Set objFSO = Nothing
Set objNetwork = Nothing
Set objShell = Nothing
Wscript.Quit
Function GetIPAddresses()
' Based on a Michael Harris script, modified by Torgeir Bakken
'
' Returns array of IP Addresses as output
' by IPConfig or WinIPCfg...
'
' Win98/WinNT have IPConfig (Win95 doesn't)
' Win98/Win95 have WinIPCfg (WinNt doesn't)
'
' Note: The PPP Adapter (Dial Up Adapter) is
' excluded if not connected (IP address will be 0.0.0.0)
' and included if it is connected.
Dim objShell, objFSO, objEnv, strWorkFile, objFile
Dim arrData, intIndex, n, arrIPAddresses, arrParts
Set objShell = CreateObject("wscript.shell")
Set objFSO = CreateObject("scripting.filesystemobject")
Set objEnv = objShell.Environment("PROCESS")
If (objEnv("OS") = "Windows_NT") Then
strWorkFile = objEnv("TEMP") & "\" & objFSO.GetTempName
objShell.Run "%comspec% /c IPConfig >" & Chr(34) _
& strWorkFile & Chr(34), 0, True
Else
' WinIPCfg in batch mode sends output to
' filename WinIPCfg.out
strWorkFile = "WinIPCfg.out"
objShell.Run "WinIPCfg /batch", 0, True
End If
Set objShell = Nothing
Set objFile = objFSO.OpenTextFile(strWorkFile)
arrData = Split(objFile. ReadAll, vbCrLf)
objFile.Close
Set objFile = Nothing
objFSO.DeleteFile strWorkFile
Set objFSO = Nothing
arrIPAddresses = Array()
intIndex = -1
For n = 0 To UBound(arrData)
If (InStr(arrData(n), "IP Address") > 0) Then
arrParts = Split(arrData(n), ":")
If (InStr(Trim(arrParts(1)), "0.0.0.0") = 0) Then
intIndex = intIndex + 1
ReDim Preserve arrIPAddresses(intIndex)
arrIPAddresses(intIndex)= Trim(CStr(arrParts(1)))
End If
End If
Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.
”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.
Our community of experts have been thoroughly vetted for their expertise and industry experience.
The Most Valuable Expert award recognizes technology experts who passionately share their knowledge with the community, demonstrate the core values of this platform, and go the extra mile in all aspects of their contributions. This award is based off of nominations by EE users and experts. Multiple MVEs may be awarded each year.
The Distinguished Expert awards are presented to the top veteran and rookie experts to earn the most points in the top 50 topics.