Inicio > Componentes, Delphi, GLibWMI, Programación, WMI > Componentes GLibWMI

Componentes GLibWMI

Share Button

GLibWMI es una librería/biblioteca de componentes enfocados a la Administración de Sistemas Windows.
Están basados en la WMI de Windows (Windows Management Instrumentation). Podéis conocer algo más sobre WMI en la entrada del blog titulada “WMI – Introducción“.

_________________________________________________________

ACTUALIZACIÓN:  1o/09/2014.

Liberada la Versión 2.1b.

Nuevas propiedades en los componentes y algunos errores corregidos.

Además la librería se ha compilado con Delphi XE7 sin problemas.

ejemplos_thumb.png

<DESCARGAR LIBRERÍA COMPLETA>

<DESCARGAR SOURCE DEMOS>

<DESCARGAR EXE DEMOS>

_________________________________________________________

ACTUALIZACIÓN:  01/08/2013.

Liberada la Versión 2.0b.

Nuevos componentes añadidos (BootConfigurationInfo, DesktopInfo CodecsInfo, RegistryInfo, TimeZoneInfo) y corrección de algunos bugs.
Compilado para las nuevas versiones de Delphi, incluídas XE4 y XE5.

 Versión 2.0 GLibWMI

<DESCARGAR LIBRERÍA COMPLETA>

<DESCARGAR SOURCE DEMOS>

<DESCARGAR EXE DEMOS>

_________________________________________________________

ACTUALIZACIÓN:  23/02/2010.

Liberada la Versión 1.8b.

Nuevos componentes añadidos y corrección de algunos bugs; Correción en la recuperación de propiedades y algunas pérdidas de memoria.

Actualizadas las demos con los nuevos componentes.

Como la anterior verión, los últimos cambios están subidos en Sourceforge (GLibWMI).

<Descargar librería completa;  Sources+Bin>

<Descargar demos; Sources+Bin>

<Descargar demos; Bin>

_________________________________________________________

ACTUALIZACIÓN:  22/01/2010.

Versión 1.6b.

He subido el proyecto a Sourceforge (GLibWMI). La ultima versión estará disponible allí para su descarga.

Se distribuye con licencia GNU y todos los ficheros (incluídos los fuentes se pueden descargar).

Descargar ficheros:

<GLibWMI completa 1.6b>
<GLibWMI demos 1.6b>
<GLibWMI EXE demos 1.6b>

_________________________________________________________

La librería está en fase beta y se puede usar de forma libre y gratuíta.

Las versiones actuales están disponibles (ficheros compilados) para D6, D7 y D2009.

Se pueden descargar diferentes paquetes:

<GLibWMI>
<GLibWMI para Delphi 6>
<GLibWMI para Delphi 7>
<GLibWMI para Delphi 2009>
<Demos compiladas>>

Funciona sin problemas en sistemas basados en Windows 2000 y posteriores.
Para más información consultar:
Operating System Availability of WMI Components

Como bien he dicho, están en fase beta, así que se aditen sugerencias, errores, comentarios,…

Un saludo.

Share Button
  1. Raynel Rodríguez
    miércoles, 3 de febrero de 2016 a las 00:22 | #1

    Hola Neftalí, saludos y felicitaciones por tus componentes, son excelentes!!. Tengo un problema o duda, estoy haciendo una aplicación de o cual crea un número serial para validar el programa por primera vez, estoy usando los componentes GLibWMI para realizarlo, en especifico los de BiosCode, pero al correrlo y validarlo con este ejemplo:

    BiosCode:=BiosInfo1.GetHashCode;
    if Hash 0 then
    EdIcode.Text := inttostr(Bioscode)+Claveanhadida
    else
    EdIcode.Text := inttostr(Bioscode);
    Clave := EdIcode.Text;

    El valor que puse en EdIcode varía, sé que si corro la aplicación en modo administrador el valor guardado en esta variable permanece fijo, cómo haría para que el valor permanezca fijo, cualquier ayuda sería excelente, uso Win 8.1. De antemano, muchísimas gracias.

  2. Neftalí
    miércoles, 3 de febrero de 2016 a las 09:46 | #2

    @Raynel Rodríguez
    Hola Raynel.
    Tendrías que ponerme algo más de código o enviarme un ejemplo, porque con ese que has puesto, no soy capaz de entender el problema que tienes.

    Un saludo.

  3. Jaume
    martes, 24 de enero de 2017 a las 22:31 | #3

    Hola Neftalí,
    Enhorabuena, te felicito. Es de agradecer esta librería.
    ¿El serial number de la propiedad SerialNumber del componente DiskDriveInfo de la GLibWMI que se muestra en los distintos discos es el número de serie del Fabricante, o es el que se asigna al formatear?
    Saludos y gracias por tu tiempo.

  4. miércoles, 25 de enero de 2017 a las 09:08 | #4

    @Jaume
    Hola Jaume.
    El serial es realmente el número de serie del fabricante (que no cambia cuando formateas el disco).

    El algunos sistemas antiguos (Windows XP) te devolverá un valor vacío porque no estaba implementado todavía en WMI. A partir de esa versión ya obtienes el valor correcto.

  5. Antonio
    viernes, 10 de marzo de 2017 a las 06:50 | #5

    Hola Neftalí.
    Excelentes componentes te mando una felicitación.
    Tengo una duda espero me puedas ayudar, con tus componentes podria desde una pc remota basado en una ip o nombre del equipo en red saber el hardware y software instalado en el equipo remoto?
    En caso de que si se pueda me podrias ayudar diciendome como poder hacerlo o cual componente usar con un pequeño ejemplo?
    De antemano muchas gracias.
    Saludos.

  6. viernes, 10 de marzo de 2017 a las 08:47 | #6

    @Antonio
    Hola Antonio.
    Gracias por la felicitación.
    En prinicpio WMI permite sin problemas conectarse tanto a un equipo local, como a otros equipos de una red, siempre que tengas permisos de acceso (y poseas usuario y contraseña).

    En mi caso esta librería inicialmente se pensó para una conexión local, así que en su día no publiqué las propiedades de usuario y contraseña, pero sí están presentes en el método de conexión, así que podrías modificar con muy poco esfuerzo el código para publicar esas propiedades.

    Si buscas en la unit CWMIBase (que usan todos lo componentes) verás que hay un método para realizar la conexión:

    //: Conectar al proveedor.
    procedure TWMIBase.ConnectWMI();

    Que posee la siguiente llamada:

    // Connect to the WMI service, with the root\cimv2 namespace
    aServices := Locator.ConnectServer(
    Self.FHost, // Host
    GetWMIRoot(), // root
    {user}STR_EMPTY, {password}STR_EMPTY,
    STR_EMPTY, STR_EMPTY, 0, nil);

    El Host, el usuario y el password se inicializan con: ‘.’ y 2 cadenas vacías. Eso corresponde a un equipo local (al mismo equipo donde se ejecuta), pero si cambias esos parámetros por el nombre/IP de otro equipo, un usuario y una contraseña válida, deberías poder acceder sin problemas a otros equipos de la red.

    Pruébalo y dime qué tal te ha ido.

    Un saludo.

  7. Jose
    miércoles, 8 de noviembre de 2017 a las 11:32 | #7

    Hola Neftalí,
    Gracias por este aporte, me ha sido de gran ayuda durante mucho tiempo.

    Estoy usando delphi 7, y utilizo el componente para obtener el número de serie del disco duro.
    He usado tambien el componente TDiskinfo.
    Me están surgiendo problemas con discos duros sólidos. TDiskInfo no me devuelve ningun valor, y con GLib me devuelve una cadena que no tiene nada que ver.
    El numero de serie real del disco es: H21995***2069, es un disco sólido.
    TDiskInfo no me devuelve nada
    GLib me devuelve:324839313539304a********2039202020202020
    El código con el que obtengo con Glib es:

    if (DDInfo.ObjectsCount 0) then
    begin
    memo1.Clear;
    for i := 0 to (DDInfo.ObjectsCount – 1) do
    begin
    DDInfo.ObjectIndex := i+1;
    memo1.Lines.Add(DDInfo.DiskDriveProperties.SerialNumber);
    end;
    end;

    Espero que puedas ayudarme.
    Gracias por todo.

  8. jueves, 9 de noviembre de 2017 a las 11:23 | #8

    @Jose
    Hola Jose.
    La verdad es que no he tenido la oportunidad de comprobar el componente con un disco sólido.
    GLibWMI se basa en WMI, así que habría que saber qué devuelve Windows para ese disco duro.
    Para ello y siguiewndo las intrucciones de esta entrada (http://neftali.clubdelphi.com/wmi-%e2%80%93-introduccion/) puedes ver la información que Windows tiene del disco.

    1) Abre una pantalla de MSDOS (CMD)
    2) Escribe lo siguiente:

    C:\Windows\System32>wmic diskdrive get Caption, Description, DeviceID, Manufacturer, SerialNumber, Size

    Eso te dará la información que el sistema tiene, a través de WMI, de los discos instalados. A ver qué sale ahí. Eso mismo es lo que puede ofrecerte GLibWMI, porque es la información que consulta. Debería ser lo mismo que te devuelve el componente; Si no es así es que hay algún problema en GLibWMI.

    Un saludo.

  9. Jose
    jueves, 16 de noviembre de 2017 a las 18:32 | #9

    Germán Estévez :
    @Jose
    Hola Jose.
    La verdad es que no he tenido la oportunidad de comprobar el componente con un disco sólido.
    GLibWMI se basa en WMI, así que habría que saber qué devuelve Windows para ese disco duro.
    Para ello y siguiewndo las intrucciones de esta entrada (http://neftali.clubdelphi.com/wmi-%e2%80%93-introduccion/) puedes ver la información que Windows tiene del disco.
    1) Abre una pantalla de MSDOS (CMD)
    2) Escribe lo siguiente:
    C:\Windows\System32>wmic diskdrive get Caption, Description, DeviceID, Manufacturer, SerialNumber, Size
    Eso te dará la información que el sistema tiene, a través de WMI, de los discos instalados. A ver qué sale ahí. Eso mismo es lo que puede ofrecerte GLibWMI, porque es la información que consulta. Debería ser lo mismo que te devuelve el componente; Si no es así es que hay algún problema en GLibWMI.
    Un saludo.

    Buenas tardes,
    hoy he podido probarlo en un equipo.
    Aparece el numero de serie 324839313539304a********2039202020202020.
    El caso es que hay aplicaciones que dan información de disco duro que si me lo da bien.
    que crees que podrías hacer?, se te ocurre algo? Gracias por todo

  10. Jose
    jueves, 16 de noviembre de 2017 a las 19:07 | #10

    Jose :

    Germán Estévez :
    @Jose
    Hola Jose.
    La verdad es que no he tenido la oportunidad de comprobar el componente con un disco sólido.
    GLibWMI se basa en WMI, así que habría que saber qué devuelve Windows para ese disco duro.
    Para ello y siguiewndo las intrucciones de esta entrada (http://neftali.clubdelphi.com/wmi-%e2%80%93-introduccion/) puedes ver la información que Windows tiene del disco.
    1) Abre una pantalla de MSDOS (CMD)
    2) Escribe lo siguiente:
    C:\Windows\System32>wmic diskdrive get Caption, Description, DeviceID, Manufacturer, SerialNumber, Size
    Eso te dará la información que el sistema tiene, a través de WMI, de los discos instalados. A ver qué sale ahí. Eso mismo es lo que puede ofrecerte GLibWMI, porque es la información que consulta. Debería ser lo mismo que te devuelve el componente; Si no es así es que hay algún problema en GLibWMI.
    Un saludo.

    Buenas tardes,
    hoy he podido probarlo en un equipo.
    Aparece el numero de serie 324839313539304a********2039202020202020.
    El caso es que hay aplicaciones que dan información de disco duro que si me lo da bien.
    que crees que podrías hacer?, se te ocurre algo? Gracias por todo

    He estado mirando por internet y he visto que este comando si lo muestra:
    wmic path win32_physicalmedia get SerialNumber
    Si lo devuelve, no se si podría generarme algun problema al cambiar a esta propiedad.
    Saludos.

  11. jueves, 16 de noviembre de 2017 a las 20:41 | #11

    @Jose
    Hola Jose.
    En ese componente no puedes cambiar la propiedad pues la clase es diferente, el componente ataca a la clase Win32_DiskDrive y la opción que comentas ataca a la clase Win32_PhysicalMedia.

    De todas formas no te hace falta. Dentro del paquete hay un componente llamado TWMISQL que permite realizar consultas contra las clases que no solucionan el resto de componentes:
    Si lo utilizas, puedes usar como SQL: “Select * from Win32_physicalmedia” y con eso podrás obtener ese valor.

    Hay un ejemplo en las demos sobre este componente.

    Un saludo.

Comment pages
1 2 589
  1. Sin trackbacks aún.
What is 23 + 3 ?
Please leave these two fields as-is:
IMPORTANTE! Para continuar, debes contestar la pregunta anterior (para evitar SPAM) :-)