Sorry, I got held up working on getting the machines to report to WSUS. But I still have over 1000 that are not reporting. So, to answer your question, yes, 2000 has different versions also. But there is something that concerns me, that is that in the script where it looks to see if it is Windows 2000, it cannot tell if it's Professional or Server. We have only a handful of 2000 machines out there and I think the percentage of them that are not reporting to WSUS is even smaller, so I want to just concentrate on XP Pro for now and hold off on 2k. So, how would I modify the script to have it first check for SP level, if it is SP 2, check for dll version and then install. If it's not sp2, check to see if it is sp 3, check for dll and install if needed. There are no sp 1's or 0's out there. Again, I appreciate your help. I have included the code with my paths and the version number for the dll if it were sp2. Dim objWMIService, strOS, strOSCaption Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") strOS = "" DSSBinLocation = "\\DC1CODENV\patches\" Set OSSet = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") ' Caption value for different OS: ' Microsoft Windows 2000 ... ' Microsoft Windows XP ... ' Microsoft® Windows® Server 2003, ..... Edition ' Microsoft Windows Vista Enterprise For Each OS in OSSet strOSCaption = OS.Caption Select Case True Case InStr(1, strOSCaption, "windows 2000", vbTextCompare) > 0 strOS = "Windows 2000" Case InStr(1, strOSCaption, "windows xp", vbTextCompare) > 0 strOS = "Windows XP" Case InStr(1, strOSCaption, "windows® server 2003", vbTextCompare) > 0 strOS = "Windows Server 2003" Case InStr(1, strOSCaption, "windows vista", vbTextCompare) > 0 strOS = "Windows Vista" End Select Next if strOS = "Windows XP" then 'get version of exist a file being updated and check to see if update needs to be applied. 'no need to reinstall the update at each boot. 'Replace path and file name to check and see if the primary file being updated has been changed or not. MSIFileSpec = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\Netapi32.dll" If (fso.FileExists(MSIFileSpec)) Then CurrentFileVersion = fso.GetFileVersion(MSIFileSpec) End If CurrentFileVersion = Replace(CurrentFileVersion, ".", "") 'change version number to reflect the version you are going to install if CurrentFileVersion < 5126003462 then 'set path and executable name here for the patch and appropriate switches. 'in this case DSSBinLocation is a network path to the patch location. CommandLine = DSSBinLocation & "WindowsXP-KB958644-x86-ENU.exe /quiet /nobackup /forceappsclose /warnrestart:60" WshShell.Run CommandLine, 1, false end if end if set OSSet = nothing set objWMIService = nothing