![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ayudita registro de windows
hola a todos!
ando necesitando una ayudita en delphi basicamente, quiero poder realidar una busqueda especifica en el registro de windows! yo actualmente entro a: HKLM_HARDWARE_DEVICEMAP_Scsi y listo las demas cadenas (Scsi Port 0, 1,2, etc) en un listbox. Bueno lo que quiero es, que una ves entre ahi, busque una cadena especifica y poder imprimirla en un edit... especificamente, quiero poder buscar ahi, la cadena "Identifier" y el valor de esa cadena pasarla a un edit... esa cadena "Identifier" se encuentra en ( en mi caso): HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 2\Scsi Bus 0\Target Id 0\Logical Unit Id 0\ si alguien tiene algna idea, agradesco su ayudita! Salu2 4n71chr157 |
#2
|
||||
|
||||
Hola martonbarbosa.
No estoy seguro de haber entendido lo que buscas... Según creo interpretar, deseas obtener el valor de determinada clave.
Ejemplo de llamada: En el caso de un tipo rdBinary al convertirlo a string, con seguridad obtendrás caracteres ilegibles. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
interesante... lo voy a poner a prueba...
aunque no estoy seguro... Porque segun veo, de esa manera puedo obtener el valor de una cadena especificada... cuando tenga un tiempito, lo pruebo y veo de que manera lo puedo adaptar a mis necesidades... A simple vista... y segun lo que yo necesito, voy a tener que meter un for ahi, para poder recorrer distintas claves... Te subo una pic, asi ves lo que yo necesito hacer... creo que el ejemplo es funcional, siempre y cuando pueda recorrer todas las claves que yo necesito, y en ese recorrido busque una palabra especifica... ![]() Bueno no me dejo subir la pic... Yo necesito recorrer todo eso y de "Logical Unit Id 0" sacar un valor especifico... no se si me entendes... es medio complicado explicar lo que necesito... Desde ya muchisimas gracias por responder. M@rton Última edición por Casimiro Notevi fecha: 18-02-2013 a las 22:50:07. |
#4
|
|||
|
|||
Hola Ecfisa, probe tu ejemplo.... va como piña mira...
LLAMADA
Ahora... mi duda, como puedo hacer que los numeros contenidos en esta linea: "'HARDWARE\DEVICEMAP\Scsi\Scsi Port 2\Scsi Bus 0\Target Id 1\Logical Unit Id 0\'" aumenten solos... digamos que recorra el registro 1 a 1 hasta encontrar el valor "Identifier"??? se entiende??? Ejemplo: 'HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0\' 'HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 1\Target Id 1\Logical Unit Id 1\' etc, hasta que encuentre el valor "identifier" creo que ahora quedo mas claro! Atte: M@rton |
#5
|
|||
|
|||
alguien???
alguna ayudita? a alguien se le ocurre como hacer eso? |
#6
|
||||
|
||||
Cita:
Por lo que entiendo de tu mensaje, el valor a buscar se encuentra en los nodos hijos de la clave a buscar ('DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0'. Entonces podrías hacer: La función busca el nombre buscado (Searched) en los nodos hijos del argumento enviado en el parámetro SUBKEY. Si lo encuentra lee el valor y lo devuelve como string, en caso contrario devuelve cadena vacía Llamada ejemplo:
En tu caso creo que sería:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
||||
|
||||
martonbarbosa,
Cita:
El código anterior leerá la clave HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi del Registro de Windows y obtendrá el valor Identifier de todas las subclaves predeterminadas que lo contienen almacenando el resultado en un control TListBox hasta 256 niveles por cada subclave leida. El resultado del código anterior en una Máquina Virtual con Windows XP Professional x32 es el siguiente: ![]() Espero sea útil ![]() Nelson. Última edición por nlsgarcia fecha: 26-02-2013 a las 10:58:34. |
#8
|
|||
|
|||
Hola
Antes que nada, Gracias ecfisa y nlsgarcia!!! Ni bien llegue a mi casa, pongo a prueba ambos ejemplos y les comento... a simple vista el codigo que ando buscando es el que propone nlsgarcia! Pero bueno, lo pruebo y les comento!!! Muchisimas gracias a los 2! Salu2 M@rton |
#9
|
|||
|
|||
Hola
nlsgarcia... tu codigo me tiro un error en la siguiente linea ¬¬ "GetKeyValue(HKEY_LOCAL_MACHINE, s, 'Identifier');" me dice: Undeclarated identifier = GetKeyValue... raro che... y con respeto a tu codigo ecfisa, anda... pero el tema es que yo tengo que escribir a mano la ruta entera... lo que ando buscando es mas o menos lo que hizo nlsgarcia... o quiero recorrer todo y traer todos los identifier encontrados en HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi... Desde ya muchisimas gracias. M@rton |
#10
|
||||
|
||||
martonbarbosa,
Cita:
Este código fue probado en tres Máquinas Virtuales con Windows XP Professional x32, Windows 7 Professional x32 y x64 y una Máquina Física con Windows 7 Professional x32 y en todos los casos funcionó correctamente. Espero sea útil ![]() Nelson. |
#11
|
|||
|
|||
nlsgarcia! disculpame...
es que me olvide de incluir la funcion GetKeyValue...
ahora si anda... jajaja bueno muchisimas gracias! ahora solo me queda adaptarlo a mis necesidades! Desde ya muchisimas gracias. los mantengo al tanto! Salu2 M@rton |
#12
|
||||
|
||||
Hola Marton.
Cita:
![]() Aunque nlsgarcia ya te dió una muy buena solución, otra opción para lograrlo es:
Llamada ejemplo: Al parámetro aKeyName podés especificarle cualquier ruta. Lógicamente cuando más próxima al valor la especifiques más rápidamente realizará la búsqueda, pero será menos amplia. Con una pequeña modificación también podes buscar en el registro completo: Pero debes armarte de paciencia... ![]() Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#13
|
||||
|
||||
ecfisa,
Excelente código ![]() ![]() Quizás esta variante mejore un poco el tiempo: Sin embargo me queda la duda de como un programa como O&O RegEditor hace las búsquedas de forma tan rápida en el Registro de Windows. Espero sea útil ![]() Nelson. Última edición por nlsgarcia fecha: 28-02-2013 a las 07:02:36. |
#14
|
||||
|
||||
Cita:
![]() Saludos. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#15
|
||||
|
||||
No conozco ese programa, pero lo mismo lee todo el registro y lo almacena en una tabla de sqlite, por ejemplo, luego trabaja con esa tabla, por lo que la búsqueda (campos indexados) es instantánea.
Por decir algo ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
|||
|
|||
gracias loco! ni bien llegue a casa pruebo los nuevos codigos...
ayer estuve viendo y adaptando el codigo de nlsgarcia a mis necesidades... y va como piña... Salu2 M@rton |
#17
|
||||
|
||||
Cita:
![]() Supongo que tendrá monitoreados los posibles cambios del registro para reducir la carga de la aplicación. El regedit tarda un tiempo parecido al código recursivo del mensaje #12 en realizar las búsquedas. Como dato adicional, es muy sencillo implementarle una búsqueda de contenido parcial, sólo hay que modificar el condicional:
Saludos. Edito: Casi me olvido... Nelson: Sin ninguna duda el código es más óptimo con la modificación que sugeriste. Pero lamentablemente la ganancia de tiempo es casi imperceptible. (Tal vez la mejora venga implementando algo como lo que comenta Casimiro)
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 28-02-2013 a las 18:14:12. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Registro de Windows | Khronos | Varios | 2 | 07-12-2008 23:23:28 |
registro de windows | JULIPO | Varios | 4 | 26-07-2007 08:17:01 |
Uso de registro de Windows | Alcolea | Windows | 3 | 05-06-2006 21:47:35 |
registro de Windows | ebeltete | API de Windows | 1 | 17-06-2003 17:00:14 |
Registro de Windows | Periyo | Varios | 3 | 08-05-2003 17:51:51 |
![]() |
|