Lire une Chaine de la BR

Résolu
mat1554 Messages postés 51 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 29 avril 2013 - 6 août 2006 à 01:28
mat1554 Messages postés 51 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 29 avril 2013 - 6 août 2006 à 20:10
Bonjour à tous,
                      J`aimerai bien avoir la commande qu`il faut entre dans Visual Basic Expres 2005, pour pouvoir lire un clé de la base de régistre.

Pour le moments j`aurai besoin de lire la clé suivante

Dans :
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName

J'aimerai lire la chaine ComputerName

Ce que je veux faire, c`est que automatiquement mon programme rentre la variable "NameComp" exemple à la chaine de la base de registre, et ensuit je veux que le text qui affiche à l`écran soit cette valeur.

Merci Bien !
Mat1554

10 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 août 2006 à 15:43
Essaie ceci :

<small>
Coloration syntaxique automatique </small>
' A placer dans un Module :

Public Const HKEY_LOCAL_MACHINE =  &H80000002 

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _ 
    "RegOpenKeyExA" ByVal hKey As Long, _ 
    ByVal lpSubKey As String, ByVal ulOptions As Long, _ 
    ByVal samDesired As Long, phkResult As Long) As Long 

' Lire d'une entrée dans la clé spécifiéé
Public Function LectureEntréeClé(Raçine As Long, NomClé As String, Entrée As String) As String 
    Dim Clé As Long 
    Dim LeBuffer As String 
    Dim LaLongueur As Long 
    Dim reponse As Long 

    ' Ouverture de la clé
    Clé = OuvertureClé(Raçine, NomClé) 

    ' Vidage des paramétres
    LeBuffer = Space$(2550) 
    LaLongueur =  Len (LeBuffer) 
    ' Appel de l'API
    reponse  = RegQueryValueEx(Clé, Entrée, 0, 1, LeBuffer, LaLongueur) 

    ' Fermeture de la clé
    FermetureClé Clé 

    ' Vérification
    LeBuffer =  Left$(LeBuffer, LaLongueur) 
    If Right$(LeBuffer, 1) = Chr$(0) Then 
        LeBuffer = Left$(LeBuffer,  Len (LeBuffer) - 1) 
    End If 

    ' Fin
    LectureEntréeClé  = Trim$(LeBuffer) 

End Function 
__________________________________________________ 

' Puis dans ton code, lorsque tu as besoins de récupérer cette valeur : 

Dim NameComp As String 

NameComp = LectureEntréeClé(HKEY_LOCAL_MACHINE, _
"SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName", "ComputerName")
 
<small>
Coloration syntaxique automatique </small>

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
6 août 2006 à 17:41
OK,
Pour récupérer le nom de l'ordinateur pas la peine d'aller dans le registre. Tu trouves de nombreuse infos dans la classe Environment notamment Environment.MachineName qui te retourne le nom de ton ordinateur.

Ensuite pour écrire et lire dans le registre il y a dans l'espace de noms My des méthodes pour accéder à la base de registre

Const
ACTIVECOMPUTER_REGKEY = "SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName"

Ecrire une valeur de type REG_SZ (string)
My
.Computer.Registry.LocalMachine.OpenSubKey(ACTIVECOMPUTER_REGKEY, True
).SetValue(
"NameComp"
,
"blablabla"
, Microsoft.Win32.RegistryValueKind.String)

Lire une valeur
MessageBox.Show(
My.Computer.Registry.LocalMachine.OpenSubKey(ACTIVECOMPUTER_REGKEY,
False
).GetValue(
"NameComp"
,
"La valeur n'existe pas"
))

Bon courage ++
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
6 août 2006 à 19:38
Regarde du coté des classes WMI tu trouveras énormément d'informations sur ton matériels.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/computer_system_hardware_classes.asp

Pour accéder à cet ensemble d'informations sa se passe dans l'espace de noms System.Management
http://msdn2.microsoft.com/fr-fr/library/system.management.aspx
Tu y trouveras des exemples ici et quelques sources .net sur vbfrance.

Bon courage ++
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 août 2006 à 06:57
Salut,

je fais pas de .net donc je ne connais pas le code mais voit certainement avec l'API suivante :

Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
6 août 2006 à 10:14
Salut,
Ohé Mortalino sa va
Mat1554 -> Sujet traité de nombreuse fois sur le forum et dans les sources de vbfrance. Fais-y une recherche.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 août 2006 à 10:26
Salut Willy,

ça gaz et toi !!
Là je suis au taf, 2 heures de sommeil, j'en peux plus... lol
T'es bien matinal pour un dimanche ! ;)

Mat, Willy à raison, il y a beaucoup de sources traitant le Registre.
Je te conseille celle de MisterRom, les functions d'APIs se trouvent dans un Module, il a créé des fonctions perso que tu peux utiliser très facilement dans ton projet.

@++
0
mat1554 Messages postés 51 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 29 avril 2013
6 août 2006 à 15:24
Oui je sais qu`il y en as bcp, mais sur aucun j`ai compris , car sa traite pas de la valeur que j`ai besoin, si je pourrai avoir le code avec la valeur dont j`ai besoin après je reussirai.

Car ds les autres topic, je comprend jamais ou c`est je suis supposer entre ma valeur,etc

Mat1554
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
6 août 2006 à 18:21
Salut, pour le nom de l'ordi en .net, vois ça :

System.Windows.Forms.SystemInformation.ComputerName

PS : mortalino> je n'en reviens pas, tu bosses le dimanche ?
0
mat1554 Messages postés 51 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 29 avril 2013
6 août 2006 à 19:23
merci a tous mais Dolphin Boy je comprend pas trop ta commandes.Je vais regarde sa plus en ampleur, mais sa risque d`etre compliquer,car ce que je veux me faire pour mon prog, c`est un System Information.

Il va avoir ds des lbl le nom de ordinateur
processeur , marque,adresse ip
carte video , etc

Si tous est possible , en passant si quelqu`un a une idée sur comment reussi a aller cherche ses information faite e le moi savoir.

Mat1554
0
mat1554 Messages postés 51 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 29 avril 2013
6 août 2006 à 20:10
ouin ok merci lol il a juste un defaut c en ang lol

Mat1554
0
Rejoignez-nous