WMIQuery is crashing (see attached file) on some computers, yet works on others.

It crashes in this statement in our login script, if I comment it out it crashes on the next WMIQUERY statement.

Of other note, we recently rolled out new versions of KIX32.EXE & KIXFORMS.DLL:

KIX32.EXE version 4.63
KIXFORMS.DLL version 2.47.5

 Code:
$SERIALNO = WMIQUERY("SERIALNUMBER", "WIN32_BIOS")[0]

If $SERIALNO < " " 	
	$SERIALNO = WMIQUERY("SMBIOSASSETTAG", "WIN32_SYSTEMENCLOSURE")[0]
EndIf


Using Glenn's UDF

 Code:
Function WMIQuery($sWhat, $sFrom, Optional $sComputer, Optional $sWhere, Optional $x, Optional $root, Optional $pAuth)
	Dim $, $sQuery, $objEnum, $sValue, $TMP, $SystemSet, $objInstance, $objLocator 

	$sComputer = Trim(Join(Split($sComputer,'\'),''))
	If Not $sComputer Or $sComputer = @WKSTA
		$sComputer = '.'
	EndIf
	
	If Not $root
		$root = '\root\cimv2'
	EndIf
	
	$sQuery = 'Select ' + $sWhat + ' From '+ $sFrom
	
	If $sWhere And $x
 		$sQuery = $sQuery + " Where " + $sWhere + " = '" + $x + "'"
	EndIf
	
	If $pAuth
    		$SystemSet = $pAuth
  	Else
    		$SystemSet = GetObject('winmgmts:{impersonationLevel=impersonate}!\\' + $sComputer + $root)
    		If @ERROR Or Not $SystemSet
      			Exit Val('&' + Right(DecToHex(@ERROR), 4))
    		EndIf
  	EndIf

	$objEnum = $SystemSet.ExecQuery($sQuery)
	If @ERROR Or Not $objEnum
		Exit VAL("&" + Right(DecToHex(@ERROR), 4))
 	EndIf
	
	For Each $objInstance In $objEnum
		$ = Execute(Chr(36) + 'sValue = ' + Chr(36) + 'objInstance.' + $sWhat)
		If VarType($sValue) & 8192
			$Tmp = $Tmp + '|' + Join($sValue,'|')
		Else
			$Tmp = $Tmp + '|' + $sValue 
		EndIf
	Next

	$WMIQuery = split(substr($Tmp,2),'|')
	Exit Val("&" + Right(DecToHex(@ERROR), 4))
EndFunction


Attachments
303.jpg
Description: WMIQuery Error Message