This took far to long to fix, and I found a bug in the original addfont.

Mace, your code was all but right... it was simply this line that was off...
 Code:
$objFont = $objNameSpace.ParseName($sfile)


The bug. Surprisingly, on XP the extended file properties do not work on fonts, all other files work fine. However, XP is very friendly to install fonts by simply copying the files to the font folder, and even automatically adds the registry settings.

Once you get past Vista, the original addfont requires modifying the permissions of the fonts folder and the fonts paths in the registry. Using the method Mace found, appears to avoid this.

Would someone be willing to give this a whirl and let me know what you think.

$RC=AddFont("Path\Font.ttf")
? @serror

 Code:
function AddFont($font)
  dim $title,$rc,$path,$fontname,$fontdescription,$objshell,$objfolder,$objfolderitem
  $addfont=1
  if exist($font)
    $path=left($font,instrrev($font,"\"))
    $fontname=right($font,-instrrev($font,"\"))
    if exist('%systemroot%\fonts\' + $fontname)
      exit 80
    else
      $objShell = CreateObject("Shell.Application")
      $objFolder=$objShell.NameSpace($path)
      $objFolderItem=$objFolder.ParseName($fontname)
      select
        case instr(@producttype,"Vista") or instr(@producttype,"Windows 7") or instr(@producttype,"Windows 8") or
             instr(@producttype,"Server 2008") or instr(@producttype,"Server 2012")
          $objFolderItem.InvokeVerb("Install")
          $error=@error
          if exist('%systemroot%\fonts\' + $fontname)
            $addfont=0
          else
            exit $error
          endif

        case instr(@producttype,"2000") or instr(@producttype,"Windows XP") or instr(@producttype,"2003")
          copy $font '%systemroot%\fonts\'
           if not exist('%systemroot%\fonts\' + $fontname)
            exit @error
          else
            $AddFont=0
          endif

        case 1
          exit -1 
      endselect
    endif
  else
    exit 2
  endif
endfunction