First - I highly recommend you change that data class name. SMP prefaces custom inventory tables with INV. This means your custom data class table is named "Inv_Font" in the database. That is dangerously close to the built-in Inv_Fonts table used by Inventory Solution.
Get rid of the DeviceID from the data class. SMP automatically adds the guid of the computer to custom inventory tables for you. You don't need to put anything in your dataclass for this - it's a freebie.
The DeviceID is also messing you up in the CI script; you have DeviceID as a required field in your dataclass - but you don't collect anything for that variable, or write that to your Output for the inventory. You are only writing stringfont.
According to your dataclass you would need to change your set columns section:
objDataRow.SetField 0, DeviceID
objDataRow.SetField 1, stringfont
Next you have a variable in your script that isn't used:
if isnull(stringfont) then
stringrequestid = "missing"
end if
I would change stringrequestid to your stringfont variable, or even get rid of it entirely. A Null value is perfectly acceptable in the database in any data type, if I remember correctly.
You are using the hex for Hkey_Local_Machine, but assigning HKey_Current_User as the constant name.
HKCU is actually &H80000001 (referenced from http://www.aspfree.com/c/a/Windows-Scripting/Working-with-the-Windows-Registry-in-WSH/ )
&H80000000 HKEY_CLASSES_ROOT
&H80000001 HKEY_CURRENT_USER
&H80000002 HKEY_LOCAL_MACHINE
&H80000003 HKEY_USERS
&H80000005 HKEY_CURRENT_CONFIG
In your WMI query, you don't need to set strComputer to a period. Just use the period in your WMI connect string. They use this in examples, but it's just busywork. The only time I use strComputer in the WMI connect string is if I need to loop through and change this variable. Here's top part of your script, modified:
Const HKEY_CURRENT_USER = &H80000001 'corrected hex value to match constant name
strComputer = "."
Set oReg=GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Office\9.0\Excel\Options"
strValueName1 = "Font"
oReg.GetStringValue _
HKEY_LOCAL_MACHINE,strKeyPath,strValueName1,stringfont
' everything in the top portion of your vbs below this point is extraneous...
If you have any questions, reply to this post. Good luck.