Here are the same two UDFs except for using the EnumKey as Richard did above. Some more people want to test them and see if they work pretty consistently...? Havent added the remote machine stuff yet but it will be east enough to add.

Code:
Break ON


$=SetOption("Explicit","ON")
$=SetOption("WrapAtEOL","ON")
$=SetOption("ASCII","ON")

MonitorSN()
?
MonitorModel()

get $

FUNCTION MonitorSN(OPTIONAL $computer)
Dim $sEDID,$ioffset,$sblock,$c,$s,$iIndex,$sMonitor
$iIndex=0
$sMonitor=EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display",$iIndex)
While Not @ERROR
$sMonitor="HKLM\SYSTEM\CurrentControlSet\Enum\Display\"+$sMonitor+"\"+EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display\"+$sMonitor,0)
If KeyExist($sMonitor+"\Control")
If Instr(ReadValue($sMonitor,"HardwareID"),"Monitor\")=1
$sEDID = ReadValue($sMonitor+"\Device Parameters","EDID")
For $iOffset=54 To 108 Step 18
$sBlock=SubStr($sEDID,$iOffset*2+1,18*2)
If Left($sBlock,8)="000000ff"
$s = SubStr($sBlock,9)
While $s
$c=Execute("Exit &"+Left($s,2))
If $c=10
Exit 0
EndIf
If $c
$MonitorSN=$MonitorSN+Chr($c)
EndIf
$s=SubStr($s,3)
Loop
EndIf
Next

EndIf
EndIf
$iIndex=$iIndex+1
$sMonitor=EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display",$iIndex)
Loop
ENDFUNCTION

FUNCTION MonitorModel(OPTIONAL $computer)
Dim $sEDID,$ioffset,$sblock,$c,$s,$iIndex,$sMonitor
$iIndex=0
$sMonitor=EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display",$iIndex)
While Not @ERROR
$sMonitor="HKLM\SYSTEM\CurrentControlSet\Enum\Display\"+$sMonitor+"\"+EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display\"+$sMonitor,0)
If KeyExist($sMonitor+"\Control")
If Instr(ReadValue($sMonitor,"HardwareID"),"Monitor\")=1
$sEDID = ReadValue($sMonitor+"\Device Parameters","EDID")
For $iOffset=54 To 108 Step 18
$sBlock=SubStr($sEDID,$iOffset*2+1,18*2)
If Left($sBlock,8)="000000fc"
$s = SubStr($sBlock,9)
While $s
$c=Execute("Exit &"+Left($s,2))
If $c=10
Exit 0
EndIf
If $c
$MonitorModel=$MonitorModel+Chr($c)
EndIf
$s=SubStr($s,3)
Loop
EndIf
Next

EndIf
EndIf
$iIndex=$iIndex+1
$sMonitor=EnumKey("HKLM\SYSTEM\CurrentControlSet\Enum\Display",$iIndex)
Loop
ENDFUNCTION