Yo creía que WMI funcionaba sólo a partir de Win2K, pero al leer la documentación de Microsoft, ésta indica que también funciona en Win98 y ME, inclusive en Win95, descargando el Run-Time adecuado.
Ahora bien...
¿Estás desarrollando la aplicación en Win98? Si es así, y puedes ver la referencia a WMI Scripting, no tengo idea de que puede estar mal.
Si estás desarrollando la aplicación en WinXP, y sólo te causa un error en Win98, pues descarga el Run-Time aqui
WMI
La sintaxis que yo he usado, es ligeramente diferente para obtener la colección de objetos pero en teoría no debería haber diferencias en los resultados:
Código:
Dim swService As SWbemServices
Dim swCpuSet As SWbemObjectSet
Dim swMemSet As SWbemObjectSet
Dim swObj As SWbemObject
Dim decTotalMemory As Variant
Set swService = GetObject("winmgmts:")
Set swCpuSet = swService.ExecQuery("Select * from Win32_Processor")
Set swMemSet = swService.ExecQuery("Select * from Win32_PhysicalMemory")
For Each swObj In swCpuSet
Print "Descripción: " & swObj.Description
Print "Nombre: " & swObj.Name
Print "Reloj: " & swObj.MaxClockSpeed & "MB"
Next swObj
decTotalMemory = 0
For Each swObj In swMemSet
decTotalMemory = decTotalMemory + CDec(swObj.Capacity)
Next swObj
Print "Memoria Física Total: " & (decTotalMemory / 1024) / 1024 & "MB"
En tu otro post, decías que habías usado GetSystemInfo para tratar de obtener este dato, pero la función no sirve para mucho a partir de los 586. Tendrías que usar ensamblador.
Info Agregada:
Acabo de ver que puedes obtener los datos del procesador del registro del sistema. La clave es:
HKEY_LOCAL_MACHINE\Hardware\Description\
System\CentralProcessor\0 (por lo menos en XP)...