cierto paquitohm, me habÃa ofuscado en la vÃa rápida y no era el buen camino
pongo el código por si alguien le interesa saber la lista de usuarios de windows y los que están conectados, esta segunda no sé si es la forma más ética, pero funciona. Por cierto, hay que ejecutarlo en modo administrador para que tome todos los datos.
Function Main()
  USuarios()
  Sesiones()
Return (Nil)
Static Function Sesiones()
  Local oWMIService
  Local oWMI
  Local oSessions
  Local oSession
  Local oAntecedent
  Local cName
  Local oDependent
  Local cSesiones := ''
  Local aSesiones := {}
  Local aAntecedent := {}
  oWMI := CreateObject( "WbemScripting.SWbemLocator" )
  oWMIService := oWMI:ConnectServer( )
  oSessions := oWMIService:ExecQuery( "SELECT * FROM Win32_LoggedOnUser" )
  for each oSession in oSessions
    aAntecedent := hb_ATokens( oSession:Antecedent, ',' )
    cName := Substr( aAntecedent[2],7, Len(Alltrim(aAntecedent[2]))-7 )
    If aScan( aSesiones, cName ) == 0
      aAdd( aSesiones, cName )
    Endif
   Â
  next
  xBrowse(aSesiones,'Sesiones')
Return ( Nil )
Static Function Usuarios()
 Â
  Local oWMIService
  Local oWMI
  Local oUsers
  Local oUser
  Local cUserName
  Local aUsuarios := {}
  oWMI := CreateObject( "WbemScripting.SWbemLocator" )
  oWMIService := oWMI:ConnectServer( )
  oUsers := oWMIService:ExecQuery( "SELECT * FROM Win32_UserAccount WHERE LocalAccount = TRUE" )
  For Each oUser In oUsers
    aAdD( aUsuarios, oUser:Name )
  Next
 Â
  xBrowse(aUsuarios,'Usuarios')
Return ( Nil )
Salud!