Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SBS2003 Logon Script Error

51 views
Skip to first unread message

Justin Herbert

unread,
Nov 18, 2011, 9:41:22 AM11/18/11
to
Hi all - I have a logon script that maps drives and sets up Outlook
signatures for our users that has been working perfectly for several
years for many users on many different PCs accross many different
OS's. All of a sudden I'm getting an error on just one users WinXP PC.
(The script runs fine on all other XP machines).

Windows Script Host
Script: \\RCNET\NETLOGON\XPLogSig.vbs
Line: 23
Char: 1
Error: ActiveX component can't create object:
'Scripting.FileSystemObject'
Code: 800A01AD
Source: Microsoft VBScript runtime error

it's the "Set fso = CreateObject("Scripting.FileSystemObject")" line
that seems to be causing the error.

Anyone got any ideas?

Rem Automatic Log & Signature Copy Routine - JPH -23/02/09
Const SigMasterLocation = "\\rcnet\common\Signatures"
Const SigFileName = "RC-"
Const SigFileName2 = "NOTUSED-"
Const SigFileName3 = "KMR-"
Const SigProfileLocation = "\Application Data\Microsoft\Signatures"
Const LocalLogFileName = "C:\OnLog.Log"
Const NetworkLogFileName = "\\rcnet\Logs$\NetOnLog.Log"

Set WshShell = WScript.CreateObject("WScript.Shell")
rc = WriteLogonInfo() 'Returns true if logon succeeds.
if rc = "Ok" then
WshShell.LogEvent 0, "Logon & Signature Script Completed Successfully"
else
WshShell.LogEvent 1, "Logon & Signature Script failed - " + vbcrlf +
rc
end if

Function WriteLogonInfo()
WriteLogonInfo = "Ok"
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
LogInfo = WriteLogEntry(LocalLogFileName)
If LogInfo <> "Ok" Then
WriteLogonInfo = "Local Log Failure" + vbcrlf + LogInfo
End If

LogInfo = WriteLogEntry(NetworkLogFileName)
If LogInfo <> "Ok" Then
WriteLogonInfo = "Network Log Failure" + vbcrlf + LogInfo
End If

Rem ** Check If there's a user outlook signature directory **
Set WshShell = WScript.CreateObject("WScript.Shell")
strStartMenu = WshShell.SpecialFolders("StartMenu")
strProfileDir = Left(strStartMenu,(Len(strStartMenu)-11))
strSigDir = strProfileDir + SigProfileLocation

If Not folderExists(strSigDir) Then
Set f = fso.CreateFolder(strSigDir)
End If

Rem ** If User Signature is found, Then Copy it, Else Log **
If fileExists(SigMasterLocation + "\" + SigFileName +
WshNetwork.UserName + ".htm") Then
fso.CopyFile SigMasterLocation + "\" + SigFileName +
WshNetwork.UserName + ".htm", strSigDir + "\" , True
Else
WriteLogonInfo = "Signature File Not Found" + vbcrlf + "Request
Generation Of New Signature"
End If
Rem ** If User Signature2 is found, Then Copy it, Else Log **
If fileExists(SigMasterLocation + "\" + SigFileName2 +
WshNetwork.UserName + ".htm") Then
fso.CopyFile SigMasterLocation + "\" + SigFileName2 +
WshNetwork.UserName + ".htm", strSigDir + "\" , True
Else
WriteLogonInfo = "Signature2 File Not Found" + vbcrlf + "Request
Generation Of New Signature"
End If
Rem ** Purposely flawed Signature3 code to output test data string **
If fileExists(SigMasterLocation + "\" + SigFileName3 + ".htm") Then
fso.CopyFile SigMasterLocation + "\" + SigFileName3 + ".htm",
strSigDir + "\" , True
Else
WriteLogonInfo = "Signature3 File Not Found" + vbcrlf + "Request
Generation Of New Signature"
WriteLogonInfo = "XPLogSig Tried to access: " + strSigDir + vbcrlf +
LogInfo
End If
End Function

Function fileExists(sFilePath)
Dim fso, bReturn
Set fso = CreateObject("Scripting.FileSystemObject")
bReturn = fso.FileExists(sFilePath)
fileExists = bReturn
End Function

Function folderExists(sFolderPath)
Dim fso, bReturn
Set fso = CreateObject("Scripting.FileSystemObject")
bReturn = fso.FolderExists(sFolderPath)
folderExists = bReturn
End Function

Function WriteLogEntry(LogFileName)
On Error Resume Next
WriteLogEntry = "Ok"

Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(LogFileName, ForAppending, True)

If Err<>0 Then
WriteLogEntry = Err.Description
Err.clear
End If

f.Write "<LOGON>" + vbcrlf
f.Write "<DATE>"+ CStr(Now) + "</DATE>" + vbcrlf
f.Write "<COMPUTERNAME>" + WshNetwork.ComputerName + "</COMPUTERNAME>"
+ vbcrlf
f.Write "<DOMAIN>" + WshNetwork.UserDomain + "</DOMAIN>" + vbcrlf
f.Write "<USERNAME>" + WshNetwork.UserName + "</USERNAME>" + vbcrlf
f.write "strStartMenu=" + WshShell.SpecialFolders("StartMenu") +
vbcrlf
f.write "strProfileDir=" + Left(strStartMenu,(Len(strStartMenu)-11)) +
vbcrlf
f.write "strSigDir=" + strProfileDir + SigProfileLocation + vbcrlf
f.Write "</LOGON>" + vbcrlf
f.Write vbcrlf
f.Close
On Error GoTo 0
End Function

0 new messages