Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2013
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Numero de Serie de un Disco Duro por la red

Hola amigos hace tiempo no andaba por el foro, me complace ver que delphi siempre va ganando terreno, a pesar que hay tanto mundo informático tratando de absorber todas las formas de programación. Pero me quedo con delphi creo que lo AMO.

Disculpe la muela salida de tema, estoy nostálgico hoy.

Estoy haciendo una aplicación que controla todas las computadoras de mi red 73, Red local, dentro de muchas cosas que hago muy particulares de mis servidores y mis Software montados, ahora necesito incorporar algunos temas de HardWere , entonces necesito aplicar algunos de los componentes y funciones que se tratan en los foros para números de serie por ejemplo del disco duro etc, pero en la red.? me dan alguna idea?.

tengo delphi XE, por ejmplo esta función sacada de los trucos con algunos cambios como cambiar pchar por pansichar , funciona perfecta en la maquina local, y me da el numero de serie físico del disco ,hay que poner PHYSICALDRIVE0 para que devuelva el serie físico sino devuelve el serial lógico que se pierde con el formateo, necesito esta función para la red, teniendo en cuenta que soy el administrador y tengo las claves de administrador del dominio y las IP de todas las Maquinas.

Discúlpenme si me falta algo por decir para un mejor entendimiento de mi pregunta o si no estoy preguntando en el foro correcto, me dicen y rectifico al instante.

Gracias a todos


Código Delphi [-]

function GetSerialNumber(Letra: Char; var VendorId: string; var ProductId: string;
  var SerialNumber: string; var Extraible: Boolean): string;
var
  Disk: THandle;
  Size: Cardinal;
  Buffer: Pointer;
  DeviceDescriptor: PSTORAGE_DEVICE_DESCRIPTOR;
begin
  Result:= EmptyStr;
  Disk:= CreateFile(PChar('\\.\PHYSICALDRIVE0'),GENERIC_READ,FILE_SHARE_READ
 // Disk:= CreateFile(PChar('\\.\' + Letra + ':'),GENERIC_READ,FILE_SHARE_READ
    or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if Disk <> INVALID_HANDLE_VALUE then
  begin
    GetMem(Buffer,12);
    try
      FillChar(Buffer^,12,0);
      if DeviceIOControl(Disk, IOCTL_STORAGE_QUERY_PROPERTY,
        Buffer,12,Buffer,12,Size, nil) then
      begin
        FreeMem(Buffer);
        Size:= PSTORAGE_DESCRIPTOR_HEADER(Buffer).Size;
        GetMem(Buffer, Size);
        FillChar(Buffer^,Size,0);
        if DeviceIOControl(Disk, IOCTL_STORAGE_QUERY_PROPERTY,
          Buffer,12,Buffer,Size,Size, nil) then
          begin
            DeviceDescriptor:= Buffer;
            Extraible:= DeviceDescriptor.RemovableMedia;
            if DeviceDescriptor.VendorIdOffset > 0 then
              VendorId:= String(PChar(Buffer) + DeviceDescriptor.VendorIdOffset)
            else
              VendorId:= EmptyStr;
            if DeviceDescriptor.ProductIdOffset > 0 then
              ProductId:= String(PansiChar(Buffer) + DeviceDescriptor.ProductIdOffset)
            else
              ProductId:= EmptyStr;
            if (DeviceDescriptor.SerialNumberOffset > 0) and
               (DeviceDescriptor.SerialNumberOffset < Size) then
              SerialNumber:= String(PansiChar(Buffer) + DeviceDescriptor.SerialNumberOffset)
            else
              SerialNumber:= EmptyStr;
          end else Result:= SysErrormessage(GetLastError);
      end else Result:= SysErrormessage(GetLastError);
    finally
      FreeMem(Buffer);
    end;
    CloseHandle(Disk);
  end else Result:= SysErrormessage(GetLastError);
end;
Responder Con Cita
  #2  
Antiguo 01-03-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otras veces en los foros hemos hablado de WMI. Si buscas en los foros encontrarás bastante información.
Utilizando WMI puedes obtener toda la información que desees del ordenador.

Lo bueno de WMI, es que no sólo funciona sobre el ordenador local, sino que también puedes consultar parámetros de otras máquinas, siempre y cuando tengas las credenciales adecuadas.
Revisa este artículo "Conector to WMI on a remote compurter".

Yo creo que con esto ya puedes empezar a buscar.

en mi web tienes una librería de componentes que te pueden ayudar en este tema (GLibWMI)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-03-2013
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
gracias

Ok, gracias amigo si recuerdo que tu has estado activo en esos temas , lo que el primer vistazo que eche en mi maquina los glib que encontré eran para delphi 2009, hace unos años estuve probandolos , no pensé que se siguieras actualizando, y tampoco pensé que me funcionaran remoto.

Gracias.

Salud y pesetas para todos
Responder Con Cita
  #4  
Antiguo 03-03-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola. No se trata de la librería GLib , que sí es un poco más antigua, sino de la GlibWMI (pacere que no soy muy original con los nombres ), que está dedicada exclusivamente al trabajo con WMI.
Tal vez tengas que hacerles algún retoque, pero diría que no te darán problemas en las versiones nuevas de Delphi.
Para el tema de remoto échale un vistazo al código, y tal vez sólo tengas que cambiar un par de parámetros.
Si tienes problemas, ya dirás...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
obtener el número de serie de un disco duro serial ATA mgc API de Windows 4 27-03-2009 15:54:18
Número de serie físico del disco duro REDCOM Varios 10 23-03-2009 20:35:53
Numero de serie del disco duro seoane Trucos 18 11-03-2009 18:45:16
Numero serie disco duro ESTEBANC C++ Builder 1 04-02-2009 01:32:24
Modificar el numero de serie de una unidad de disco duro Sick boy API de Windows 2 06-10-2004 12:45:33


La franja horaria es GMT +2. Ahora son las 23:33:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi