begin process at 2010 03 16 01:21:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ACCÈS À LA BASE DE REGISTRE

ACCÈS À LA BASE DE REGISTRE


 Information sur la source

Note :
8,44 / 10 - par 9 personnes
8,44 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Expert Date de création :21/06/2002 Date de mise à jour :21/06/2002 13:57:00 Vu / téléchargé :15 689 / 1 968

Auteur : MisterRom

Ecrire un message privé
Site perso
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Module d'accès à la base de registre : recherche, lecture/écriture, suppression de clés et d'entrées, ...
Vu que la gestion de (toute) la base de registre n'est pas aisée en VB, je crois que ce module devrait pouvoir aider un certain nombre d'entre nous.

Source

  • '
  • ' Exemple d'utilisation des procédures du module Registre.bas
  • '
  • ' L'utilisation des API d'accès n'est pas aisée; c'est pour cela que j'ai écrit quelques fonctions
  • ' dans ce module, pour servir d'intermédiaire avec les API en simplifiant leur utilisation.
  • '
  • Public Sub ExempleRegistre()
  • Dim Clé As Long
  • Dim CheminMisterRom As String
  • Dim CheminNomOrdinateur As String
  • Dim Nom As String
  • Dim h As Integer
  • ' Initialisation de la clé
  • CheminMisterRom = "Software\Mr Rom\Exemple d'utilisation des API"
  • CheminNomOrdinateur = "System\ControlSet\Control\ComputerName\ComputerName"
  • ' Vérification de la présence de cette clé d'entrée dans la base de registres
  • If Not VérifiePrésenceClé(HKEY_CURRENT_USER, CheminMisterRom) Then
  • ' Clé non-présente
  • ' Création de cette entrée
  • CréationClé HKEY_CURRENT_USER, CheminMisterRom
  • ' Exemple de lecture d'une information dans la base de registre
  • ' Le nom de l'ordinateur dans le réseau
  • ' Ouverture de la clé
  • Clé = OuvertureClé(HKEY_CURRENT_USER, CheminNomOrdinateur)
  • ' Lecture de l'entrée
  • Nom = Trim$(LectureEntrée(Clé, "ComputerName"))
  • ' Fermeture de cette clé
  • FermetureClé Clé
  • ' Stockage de ce nom dans un emplacement personnalisé de la base de registre
  • ' HKEY_CURRENT_USER\Mr Rom\Exemple d'utilisation des API
  • ' Ouverture de la clé
  • Clé = OuvertureClé(HKEY_CURRENT_USER, CheminMisterRom)
  • ' Ecriture de cette valeur
  • EcritEntrée Clé, "Nom de l'ordinateur", Nom
  • ' Fermeture de cette clé
  • FermetureClé Clé
  • End If
  • ' Ouverture de la clé
  • Clé = OuvertureClé(HKEY_CURRENT_USER, CheminMisterRom)
  • ' Lecture de l'entrée
  • Nom = Trim$(LectureEntrée(Clé, "Nom de l'ordinateur"))
  • ' Fermeture de cette clé
  • FermetureClé Clé
  • ' Un message pour vous ...
  • MsgBox "Salut ! Le nom de votre ordinateur est : "+Nom, vbInformation, "Mr Rom"
  • End Sub
'
' Exemple d'utilisation des procédures du module Registre.bas
'
' L'utilisation des API d'accès n'est pas aisée; c'est pour cela que j'ai écrit quelques fonctions
' dans ce module, pour servir d'intermédiaire avec les API en simplifiant leur utilisation.
'
Public Sub ExempleRegistre()
    Dim Clé As Long
    Dim CheminMisterRom As String
    Dim CheminNomOrdinateur As String
    Dim Nom As String
    Dim h As Integer
    
    ' Initialisation de la clé
    CheminMisterRom = "Software\Mr Rom\Exemple d'utilisation des API"    
    CheminNomOrdinateur = "System\ControlSet\Control\ComputerName\ComputerName"

    ' Vérification de la présence de cette clé d'entrée dans la base de registres
    If Not VérifiePrésenceClé(HKEY_CURRENT_USER, CheminMisterRom) Then
        ' Clé non-présente
        ' Création de cette entrée
        CréationClé HKEY_CURRENT_USER, CheminMisterRom

        '  Exemple de lecture d'une information dans la base de registre        
        ' Le nom de l'ordinateur dans le réseau

        ' Ouverture de la clé 
        Clé = OuvertureClé(HKEY_CURRENT_USER, CheminNomOrdinateur)    
        ' Lecture de l'entrée    
        Nom = Trim$(LectureEntrée(Clé, "ComputerName"))    
        ' Fermeture de cette clé
        FermetureClé Clé    
        
        ' Stockage de ce nom dans un emplacement personnalisé de la base de registre
        ' HKEY_CURRENT_USER\Mr Rom\Exemple d'utilisation des API
        ' Ouverture de la clé 
        Clé = OuvertureClé(HKEY_CURRENT_USER, CheminMisterRom)    
        ' Ecriture de cette valeur
        EcritEntrée Clé, "Nom de l'ordinateur", Nom
        ' Fermeture de cette clé
        FermetureClé Clé    
        
    End If
    
    ' Ouverture de la clé 
    Clé = OuvertureClé(HKEY_CURRENT_USER, CheminMisterRom)    
    ' Lecture de l'entrée    
    Nom = Trim$(LectureEntrée(Clé, "Nom de l'ordinateur"))    
    ' Fermeture de cette clé
    FermetureClé Clé    

    ' Un message pour vous ...
    MsgBox "Salut ! Le nom de votre ordinateur est : "+Nom, vbInformation, "Mr Rom"

End Sub

 Conclusion

Prenez le temps d'essayer les fonctions que j'ai écries, elles sont sensés simplifier la vie. Il y a un bon paquet d'API concernant la base de registre, je n'en n'ai moi-même utilisé qu'une bonne partie. Le seul inconvénient majeur est la conversion des paramètres et les conventions d'appels du C.

Je crois qu'il n'y a pas de bug dans le code que je vous ai fournis, ni dans le module Registre.bas (je l'utilise depuis des lustres sans problème apparent ...)

Si le besoin se fait se sentir, je peux écrire une petite doc détaillée sur la méthode d'accès et les fonctions les plus importantes.

A+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION DE L' API GOOGLE YOUTUBE RECHERCHER ET LIRE DES ... par tresorsdevie
Source avec Zip Source avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118

Commentaires et avis

Commentaire de vincenthard le 21/06/2002 17:34:27

bonjour misterrom je viens de commencé dans le vb alors je voulais savoir quescequ'on m'etais pour que  marche se code ( dans la form ) ou il faut ajouter des bontons etc... merci

Commentaire de Tidus le 02/09/2002 11:18:03

Bin avec le code tel qu'el tu vas pas voir grand chose, quoique ... Il écrit des clés dans le registre et les vérifie. Tu suis les commentaire pour commencer.
Pour tester le code, tu fais une form standard, tu colles la SUB ci-dessus dans ta form, puis dans ta suf Form_Load (quand tu double-cliques sur la form dans l'éditeur de fenêtre), tu mets ExempleRegistre() (les parenthèses sont facultatives vu qu'il n'y a pas d'arguments et que c une SUB). Pis t'essayes de caler quoi fait quoi pour comprendre le tout. Si t'as un PB, hésite pas à me contacter.

Commentaire de ld40 le 24/10/2003 21:12:40

bonjour, je voulais savoir si écrire dans la base des registres est le meilleur moyen de sauvegarder les paramètres d'une appli (quand on y connait pas grand chose en base des registre.)

Je veux dire par là, y a t'il un risque de flinguer ma base des registre par ignorance?

Commentaire de guerino le 24/05/2004 12:58:28

Bonjour à tous,

Je cherche à inscrire et à lire des informations dans la base de registre.

J'arrive avec la fonction RegSetValueExString à écrire dans la base de registre mais dès que j'utilise la fonction RegQueryValueEx ci-dessus j'ai une erreur 5 : "Argument ou appel de procédure incorrect".
Quelqu'un a-t-il déjà eu ce problème?

En fait j'ai essayé de lancer aussi les fonctions RegQueryValueExNULL et RegQueryValueExNULL qui sont du même genre et cela me donne le même message (Le retour de ces fonction est toujours 5).
J'ai beau vérifier tous les arguments même lors du pas à pas et je ne vois pas d'où vient le problème.

D'autre part, existe-t-il un site sur lequel on peut trouver plus d'infos sur les APIs. En fait, je voudrais la liste de tous les options possible pour certains arguments. Par exemple, j'aimerais comprendre pourquoi dans l'appel de la fonction RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch), pourquoi on met 0&, quelle est la signification de cette valeur?

Merci d'avance pour votre aide.

Un développeur coincé...

Commentaire de KaMMaK le 25/06/2004 16:22:33

Super pratique ton package !! Me sert très bien, si ce n'est qu'il lui manque une sub afin d'écrire une valeur d'une clé.
Voila celle que j'ai fait (avis aux intéressés) :

' Ecrire une valeur dans la clé spécifiéé
Public Function EcritureEntréeClé(Raçine As Long, NomClé As String, Entrée As String, Valeur As String) As String
    Dim Clé As Long
    
    ' Ouverture de la clé
    Clé = OuvertureClé(Raçine, NomClé)
    
    ' Ecriture de la valeur
    EcritEntrée Clé, Entrée, Valeur
    
    ' Fermeture de la clé
    FermetureClé Clé
    
End Function

Merci encore !

Commentaire de ZackyBambou le 21/07/2004 14:08:01

Suis-je fou ou sans la description de tes fonctions OuvertureClé, ÉcritEntrée, FermetureClé et LectureEntré se source ne sert à rien ?

J'pense être normale !

Thx pareil de l'effort de démontrer, mais c'est inutilisable sans cela !

Commentaire de furet94 le 30/01/2005 10:00:43

Bonjour,
ton code est parfait et clair... et si je réagis c'est à cause des commentaires :
- il y a ceux qui savent juste cliquer sur l'icone vb et qui veulent gérer la registry (des beaux dégâts en perspective)
- il y a ceux qui ont réussi à écrire "hello" et qui se croient ingénieurs informaticiens (des grands comiques qui me font beaucoup rigoler en les lisant)
- et ceux qui se sont trompé de site et se croient chez Disney.....  (peut-être que la fée les sauvera... LOL)


Continue, ne te laisse pas décourager....

Commentaire de Najdar le 21/02/2005 18:04:51

Très intéressant,

Serais-tu par hasard comment on renomme une clé qui à des sous-clés ?

Commentaire de kazimir le 20/07/2005 18:00:11

Salut

Je viens de tester ce bout de code, vraiment nickel.
Merci bien pour l'aide que tu m'as apporté.
(Je mets 9 car comme on dit, la perfection n'existe pas)

Commentaire de PCPT le 24/11/2005 18:18:05 administrateur CS

salut,
des redondances, des utilisations de variables inutiles, module pas super intuitif, et des noms de variable à changer (é ç ..), mais tout de même fonctionnel et instructif.
7/10
PCPT  [AFCK]

Commentaire de mister_rom le 25/11/2005 02:11:32

Hum, hum ...

Je voulais juste réagir par rapport à tous les commentaires que je viens de lire sur le source que j'ai envoyé sur le site.
Après prés de 20 ans de programmation (j'ai eu la chance de commencer le basic sous les Amstrad CPC en 86), je suis toujours surpris de voir que certaines personnes se croyent programmeur parcequ'ils utilisent le code source de quelqu'un, sans savoir comment ca marche (merci pour ton commentaire FURET94).

Je commente à haute dose mes sources (sans difficultés et temps perdu a première vue) car je gére de nombreux projets de développment, et pour ceux qui n'en ont pas l'habitude et ne vivent pas de ca, c'est ce qui fait la différence entre un produit qui fait gagner de l'argent par une maintenance facile et un autre qui vous fait perdre du temps, donc de l'argent.

Ce code avait été écrit pour 2 buts complémentaires :
- offrir des procédures et fonctions opérationnelles pour ceux qui écrivent du code et ont besoin de fonctions réalisant des tâches bien précises
- expliquer à seul qui veulent aller plus loin, comment ça marche, en détaillant comment on y arrive.

Je réagirait à quelques commentaires :
- Commentaire de : pcpt le 24/11/2005 18:18:05
  Je suis francophone et je bosse sous VB6 (pas encore sous .Net). Donc quand je déclare mes variables, je les nommes en bon francais avec des é et des ç. Je voudrais juste attirer ton attention, que si avant ces caractéres étaient interdits, c'est parceque les caractéres étaient stocké en ascii 7 bits (les américains n'avait pas besoin de plus ...). VB6 et tous les IDE modernes nous machent le travail en BIEN : un petit ctrl+espace et le reste du nom.
  Le code a été écrit pour être compréhensibles par tout, et non pour un groupe d'initié se vantant de maîtriser un (ltp)->.index++
(c'est du c++ : post-incrémentation de champs d'une classe ou d'un type, reférencé par un pointeur non-typé)

- Commentaire de : ZackyBambou le 21/07/2004 14:08:01
  Je n'ai pas compris ton comentaire, excuse-moi.


Juste un dernier pensée : la programmation est vaste, et VB malgré sa puissance actuelle (VB.Net) n'en est que le 1er niveau. Bien compris (surtout sur les notion de bases), il permet de faire des petits miracles : un trés bon programmeur VB peut faire mieux qu'un bon programmeur C++. Mais s'il évolue toujours, il peut se transforma en programmeur c, asm ou autre, pas parceque ces langages sont mieux, mais juste de la même manière qu'un développeur évolue en chef de projet junior, puis senior puis en architecte des systèmes.

PS: j'envoie une nouvelle série de modules ...

Commentaire de PCPT le 25/11/2005 02:36:52 administrateur CS

je sens comme un pincement dans ton commentaire....
désolé si j'en suis la cause, j'ai au moins le mérite (pour moi) d'avoir réussi à te faire sortir de ta tanière pour déposer ta première emprunte sur ta source depuis plus de 3ans ;)

et le "faux développeur" est sans doute plus celui qui ne fait que télécharger des sources ou noter sans mot dire, plutôt que celui qui va perdre un peu de temps en remerciant l'auteur par une remarque qui lui semble constructive.

en détail, VB6 accèpte la concaténation avec le "+" mais le "&" est à préférer.
pareil pour ~l'ascii non-étendu~.

ps : ce qui me fait sourir doucement, c'est les développeurs qui ont 20ans d'expérience qui pensent ne parler qu'à des pré-adolescents.....

bonne continuation à tous.
PCPT   [AFCK]

Commentaire de nihaoma le 14/02/2006 11:59:25

très bon Module, ca fonctionne très bien et ca simplifie grandement la vie...merci à toi

Commentaire de phenX le 07/04/2006 15:38:45

ca ne marche qu'en VB6?

Commentaire de mortalino le 12/05/2006 06:34:09

Quel plaisir de lire ces commentaires.
En tant que spectateur, je me régale...

MisterRom : pour un francophone, t'as plutôt un nom anglais !

En tout cas merci pour le code, je vais mettre le lien dans le forum pour qqun.

@ ++
Mortalino

PS : c'est vrai que 3 ans c'est long (20 ans de programmation = 7 visites sur CS)

Commentaire de dracoon le 04/08/2006 10:56:52

Ta souce est geniale. J'ai eu du mal à la mettre en application mais tu n'y es pour rien

Pour ceux qui critique le nom de tes variables, elles ont le mérite d'être clair

Commentaire de furet94 le 17/01/2007 08:15:27

Bonne année à tous

En définitive Mister-rom et Pcpt avez tous les 2 raison et il n'y a que le fonctionnement du forum à comprendre (pas facile j'en conviens)
- les réponses irritantes : la réponse se fait à la fin du fil et dans la précipitation on oublie la référence au post concerné. Le résultat en est que certaines réponses semblent bizarres mais en fouillant dans les autres on arrive parfois à trouver celle qui l' initiée.
- les consultants du forums sont variés et leurs raisons sont multiples. Personnellement je suis architecte senior au ministère de l'agriculture et ne développe plus qu'en python et php (et peu souvent). Toutefois certaines applis (ou parties d'applis) sont en VB pour des questions de simplicité (le gestionnaire de composants en particulier et l'OLE) et quand je dois mettre le nez dedans, je ne veux pas réinventer le monde et consulte des sites comme celui-là.
- Mister-rom comme moi-même, en raison de notre expérience, savons que "l'astuce de programmation" géniale viens souvent d'un néophyte car en débutant on a tout à inventer alors qu'après plusieurs années on va appliquer toujours les mêmes principes de programmation : code-source permet d'éviter cela !

En résumé, pas d'ironie, pas de susceptibilité.... et encore bonne année à tous

Commentaire de furet94 le 17/01/2007 08:18:31

oups... pardon... je viens de répondre car j'ai reçu un mail me disant que le fil avait été modifié....  je n'avais pas regardé les dates des posts...

Il est où l'ajout du 15/1/2007 ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales