| [Truc&Astuce]Lire une chaine dans la base de registre | |
|
|
Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 10:45 | |
| Bonjour, Suite à l'utilitaire du petit livret qu'a réalisé notre excellentissime confrere JL35, Je me suis dis que si il avait la possibilité de détecter la présence ou non de l'utilitaire ImageMagick sur un PC, il pourrait valider ou non son option d'édition de photo. Donc je me suis dis qu'il y aurait peut être quelque chose à gratter du côté de la base de registre. Ci-joint une petite dll ainsi qu'un programme de démo pour pouvoir lire le contenu d'une clé de la base de registre. Pour l'instant on ne peut lire que les chaines de caractères.... le programme de démoLa dll | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 14:11 | |
| Petite modif : Ajout de la fonction WriteString qui permet d'écrire une chaine de caractère dans la base de registre. Le lien vers la dll est toujours le même.... Exemple d'appel: - Code:
-
dll_on "registre.dll"
dim HKEY_CLASSES_ROOT%: HKEY_CLASSES_ROOT% = 2147483648 :' 0x80000000 dim HKEY_CURRENT_USER%: HKEY_CURRENT_USER% = 2147483649 :' 0x80000001 dim HKEY_LOCAL_MACHINE%: HKEY_LOCAL_MACHINE% = 2147483650 :' 0x80000002 dim HKEY_USERS%: HKEY_USERS% = 2147483651 :' 0x80000003 dim HKEY_PERFORMANCE_DATA%:HKEY_PERFORMANCE_DATA% = 2147483652 :' 0x80000004 dim HKEY_CURRENT_CONFIG%: HKEY_CURRENT_CONFIG% = 2147483653 :' 0x80000005 dim HKEY_DYN_DATA%: HKEY_DYN_DATA% = 2147483654 :' 0x80000006
dim Cle$:Cle$="Software\Panoramic\Language" dim Entree$:Entree$="Font" dim Contenu$:Contenu$=string$(40," ") dim retour%
' lecture de l'entrée Font située dans la clé HKEY_CURRENT_USER\Software\Panoramic\Language retour%=dll_call5("ReadString",HKEY_CURRENT_USER%,Adr(Cle$),adr(Entree$),adr(Contenu$),len(Contenu$)) print "#"+Contenu$+"#"
' création d'une entrée qui s'appelle 'Toto' ' dedans nous allons y mettre la chaine de caractère "Essai de WriteString" Entree$="Toto" Contenu$="Essai de WriteString" retour%=dll_call4("WriteString",HKEY_CURRENT_USER%,Adr(Cle$),adr(Entree$),adr(Contenu$))
dll_off | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 14:30 | |
| Très chouette, mais ATTENTION ! A réserver à ceux qui savent vraiment ce qui'ils font ! Et n'imaginez-pas que parce qu'une écriture dans le registre de XP donne le résultat escompté, que le même programme va marcher tel quel sous Vista ou Seven !
Faites TOUJOURS une sauvegarde complète du registre avant d'essayer les écritures, ou au moins un point de restauration ! Précaution élémentaire !
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 14:38 | |
| Merci Nardo ! mais je suis quand même entièrement de l'avis de Klaus. Autant c'est très intéressant pour explorer la base de registres, autant il faut bien savoir ce qu'on fait pour écrire dedans !
@Nardo pour ce qui est de ImageMagick je suis en train de coder l'équivalent en Panoramic (incrustation d'une image dans une autre), pour pouvoir s'en passer (pour l'instant je me mélange un peu les pinceaux, mais ça va venir), mais ton idée est évidemment valable pour n'importe quel logiciel. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 14:49 | |
| Comme le dis Klaus : A utiliser avec précaution ! J'ai hésité à mettre la fonction WriteString pour cette raison...
| |
|
| |
659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 18:39 | |
| Bonjour Un grand Merci Nardo. C'est quelque chose que j'attendais depuis un certain déja. Jack avait répondu que cela existait déja pour Panoramic mais qu'il ne l'avait pas inclu encore a Panoramic.
Lecture ecriture des registres de windows Jeu 30 Déc 2010 - 17:33
A+ | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 21:30 | |
| Bonsoir Nardo, j'ai un problème avec ton programme de démo (registre.bas), sans compter qu'il faut rajouter des % à toutes les variables HKEY..., à l'exécution j'ai: "Not Correct Arithmétic Expression: Error in Function. Line:17", la ligne 17 étant: - Code:
-
retour%=dll_call5("Test",HKEY_CURRENT_USER%,Adr(Cle$),adr(IdChaine$),adr(Contenu$),len(Contenu$)) ?? | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 21:52 | |
| Bonsoir à tous ! @JL35: c'est une erreur de ma part... recupere le 2eme post... la syntaxe : retour%=dll_call5("ReadString",HKEY_CURRENT_USER%,Adr(Cle$),adr(Entree$),adr(Contenu$),len(Contenu$)) A utiliser avec precaution : retour%=dll_call4("WriteString",HKEY_CURRENT_USER%,Adr(Cle$),adr(Entree$),adr(Contenu$)) | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Lun 11 Avr 2011 - 22:01 | |
| Merci Nardo, ça marche effectivement mieux avec le deuxième exemple ! même si j'ai inhibé l'écriture dans la base ! | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Mar 12 Avr 2011 - 9:34 | |
| Bonjour à tous, Pour simplifier le truc, le programme de demo ainsi que la Dll de référence sont dans les liens situé dans le 1er post... J'ai rajouté dans la dll la possibilité de lire une valeur numérique: - Code:
-
retour% = dll_call3("ReadInteger",HKEY_CURRENT_USER%,Adr(Cle$),adr(Entree$)) ATTENTION : J'ai modifié les valeurs des variables/constantes ( ) HKEY_#####% | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Mar 12 Avr 2011 - 14:41 | |
| Mise à jour : 1- Lecture d'une clé de type chaine de caractère dans la base de registre: - Code:
-
retour% = Dll_Call5("ReadString", Root%, Adr(cle$), Adr(Entree$), Adr(Contenu$), Len(Contenu$)) 2- Ecriture d'une clé de type chaine de caractère dans la base de registre: - Code:
-
retour% = Dll_Call5("WriteString", Root%, Adr(cle$), Adr(Entree$), Adr(Contenu$), Create%) 3- Lecture d'une clé de type Entier dans la base de registre: - Code:
-
retour% = Dll_Call3("ReadInteger", Root%, Adr(cle$), Adr(Entree$)) 4- Ecriture d'une clé de type Entier dans la base de registre: - Code:
-
retour% = Dll_Call3("WriteInteger", Root%, Adr(cle$), Adr(Entree$), Valeur%, Create%) | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Mar 12 Avr 2011 - 15:54 | |
| L'écriture n'est à utiliser que lorsqu'on maitrise parfaitement ce qu'on veut faire. Le moindre grain de sable dans ce genre de commande et c'est gagné pour une réinstallation de Windows et de toutes les applications... | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre Mar 12 Avr 2011 - 16:42 | |
| Bonjour Jack,
Tu es la 2ème personne, avec Klaus, à brandir un drapeau, à juste titre d'ailleurs ! je réitère ce que j'ai dis :
En effet, si on ne sait pas à quoi ça sert, il vaut mieux s'abstenir de toucher aux fonctions d'écriture...
Pour les aficionados, j'ai quand même rajouter les fct d'écriture qui peuvent être utiles pour modifier des clés/entrées appartenant à des applications perso faites en Panoramic. Il n'est pas conseillé de trafiquer les autres clés du système...
| |
|
| |
Contenu sponsorisé
| Sujet: Re: [Truc&Astuce]Lire une chaine dans la base de registre | |
| |
|
| |
| [Truc&Astuce]Lire une chaine dans la base de registre | |
|