begin process at 2012 02 14 14:30:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

écrire dans le base de registre type REG_MULTI_SZ


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

écrire dans le base de registre type REG_MULTI_SZ

jeudi 1 juillet 2004 à 15:26:26 | écrire dans le base de registre type REG_MULTI_SZ

vanes83

bonjour, j'aimerais écrire dans la base de registre mais le pb c'est que le type de ma clé est REG_MULTI_SZ
j'utilise:
Set WshShell = CreateObject("Wscript.Shell")
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\ISNT5\WhiteBlackLists\Global\l_editBL_1", ligne

mais ma clé est changé en REG_SZ est il ne reste plus que la valeur que je voulais insérer.
Comment faire pour ajouter une valeur dans une clé de type REG_MULTI_SZ

merci
jeudi 1 juillet 2004 à 18:20:25 | Re : écrire dans le base de registre type REG_MULTI_SZ

Houzefa

lol jte retrouve sur ce forum après celui de PHPCS !

donc pour stocker une valeur en REG_MULTI_SZ faut remplacer la simple chaine de caractères que t'utilisais par un tableau comprenant des chaines ; ce tableau doit etre terminé par 2 caractères de code ASCII 0.

Houzéf@ - www.123toto.com
vendredi 2 juillet 2004 à 08:39:54 | Re : écrire dans le base de registre type REG_MULTI_SZ

vanes83

Ben oui je suis là aussi!!!

Je ne comprend pas bien ce que tu veux dire , j'ai mis la valeur que je voulais insérer dans un tableau mais j'ai une erreur!

WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\ISNT5\WhiteBlackLists\Global\l_editBL_1", ligne(0)

Comment je dois faire pour insérer ma valeur dans la clé REG_MULTI_SZ !!

Merci
vendredi 2 juillet 2004 à 13:35:49 | Re : écrire dans le base de registre type REG_MULTI_SZ

Houzefa

ah oui... mais là c'est pas la bonne méthode... pour stocker une valeur en REG_MULTI_SZ, faut passer par une API de Windows ; et là tu peux utiliser un tableau.
voilà un exemple :

Private Const REG_MULTI_SZ = 7
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore
Private Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
Private Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const SYNCHRONIZE = &H100000
Private Const READ_CONTROL = &H20000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = (KEY_READ)
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

'Dans ton Sub :

RegOpenKeyEx HKEY_LOCAL_MACHINE, "Software\TrendMicro\ISNT5\WhiteBlackLists\Global\l_editBL_1", 0, HKEY_ALL_ACCESS, Cle

RegSetValueEx Cle, "Valeur", 0, REG_MULTI_SZ, Tableau, Len(Tableau)

RegCloseKey Cle


voilà pour le code de base ; ce qui est + compliqué est d'obtenir "Tableau", qu'il faut insérer. en fait faut parcourir le tableau et à la fin de chaque ligne du tableau faut rajouter "\0" ; de plus, à la fin du tableau, faut encore rajouter "\0" (ce qui fait qu'il yaura bien 2 "\0" à la fin du tableau au total).


Houzéf@ - www.123toto.com
vendredi 2 juillet 2004 à 14:39:49 | Re : écrire dans le base de registre type REG_MULTI_SZ

vanes83


J'ai essayé ça:

Private Const HKEY_LOCAL_MACHINE = &H80000002
Const webdir = "F:\IMSS\SiteWeb\"

Const REG_MULTI_SZ = &H7

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long


Sub Main()
Dim ligne
If Dir(webdir & "valreg.txt") <> "" Then
Open webdir & "valreg.txt" For Input As #1
Line Input #1, ligne
Close #1

ligne = ligne & "\0" & "\0"

RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\essai", 0, HKEY_ALL_ACCESS, Cle

RegSetValueEx Cle, "val", 0, REG_MULTI_SZ, ligne, Len(ligne)

RegCloseKey Cle

End If
End Sub

Ma clé est:"HKEY_LOCAL_MACHINE\SOFTWARE\essai" et "val" et son nom ben oui je voulais pas foutre en l'aire ma vrai clé!!
Mais on peut pas faire Len d'un tableau? Tu es sur qu'il faut utiliser un tableau?
J'ai essayé d'ajouter à ma chaine ligne les caractères \0 mais ça ne fait rien du tout!
Et sinon est ce que toute ces constantes sont obligatoires?
vendredi 2 juillet 2004 à 15:06:59 | Re : écrire dans le base de registre type REG_MULTI_SZ

Houzefa

pour ma part dans un code je mets les constantes comme ca au début et ensuite je les vire toutes (genre je remplace REG_MULTI_SZ par 7) mais là j'ai tout laissé pour être + explicite.

normalement faut utiliser un tableau, tu devrais refaire comme t'avais fais avant avec le ligne(0).

pour le Len() c'est pas grave tu fais le Len() de la 1ère ligne du tableau et tu ajoutes 2 vu que ya les 2 "\0" en +.
en clair c'est Len(ligne(0)) + 2

sinon jsuis désolé pour mes réponses pas très précises à plusieurs reprises mais là non plus j'ai jamais essayé...

Houzéf@ - www.123toto.com
vendredi 2 juillet 2004 à 15:09:22 | Re : écrire dans le base de registre type REG_MULTI_SZ

Houzefa

ah oui par contre c'est
RegSetValueEx Cle, "Val", 0, REG_MULTI_SZ, ligne, Len(ligne(0))+2

et pas RegSetValueEx Cle, "Valeur", 0, REG_MULTI_SZ, ligne(0), Len(ligne(0))+2

c'est justement pour ca que ya un "As Any" dans la déf de la fonction, c'est pour pouvoir lui envoyer tout ce qu'on veut !

Houzéf@ - www.123toto.com
vendredi 2 juillet 2004 à 16:02:00 | Re : écrire dans le base de registre type REG_MULTI_SZ

vanes83


Maintenant g ça :
Sub Main()
Dim cle
Dim ligne(1)
If Dir(webdir & "valreg.txt") <> "" Then
Open webdir & "valreg.txt" For Input As #1
Line Input #1, ligne(0)
Close #1
ligne(0) = ligne(0) & Chr$(0) & Chr$(0)

RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\essai", 0, HKEY_ALL_ACCESS, cle

RegSetValueEx cle, "val", 0, REG_MULTI_SZ, ligne, Len(ligne(0)) + 2

RegCloseKey cle

End If
End Sub


et il me met une erreur de compil type imcompatible au niveau de ligne dans
RegSetValueEx cle, "val", 0, REG_MULTI_SZ, ligne, Len(ligne(0)) + 2
vendredi 2 juillet 2004 à 18:00:09 | Re : écrire dans le base de registre type REG_MULTI_SZ

Houzefa

enfin !!! je suis à peu près sur de pas me tromper cette fois !

alors d'abord faut que jtexplik quelques trucs :
- le caractère "\0" c'est le meme que Chr$(0)
- une REG_MULTI_SZ c pas exactement un tableau, excuse. en fait tu vas comprendre par un exemple :
la chaine "Bonjour", en REG_MULTI_SZ, serait :
'B' & Chr$(0) & 'o' & Chr$(0) & 'n' & Chr$(0) & 'j' & Chr$(0) & 'o' & Chr$(0) & 'u' & Chr$(0) & 'r' & Chr$(0) & Chr$(0)

en fait faut mettre un "\0" après chaque caractère, et en mettre un à la fin (donc yen a 2 au total à la fin).

donc d'abord la ligne qui commence par RegSetValueEx serait :
RegSetValueEx cle, "val", 0, REG_MULTI_SZ, chaine_sz, Len(chaine_sz)


mais avant faut générer "chaine_sz" selon le principe que jviens de te dire. on va dire que la chaine de départ est "ligne" :
For id_for = 1 To Len(ligne)
chaine_sz = chaine_sz & Mid$(ligne, id_for, 1) & Chr$(0)
Next
chaine_sz = chaine_sz & Chr$(0)


voilà c'est pas très dur a comprendre en fait...
et sory pour toutes les con****es que jtai di avant...

Houzéf@ - www.123toto.com
dimanche 4 juillet 2004 à 12:17:55 | Re : écrire dans le base de registre type REG_MULTI_SZ

vanes83

J'ai fait ce que tu m'as dit et je comprends pas ça ne marche pas il ne se passe rien dans le registre!
Qd on ouvre la clé ,est ce qu'on peut vérifier si elle a bien été ouverte?Peut être que ça vient de là enfin je ne sait pas!
J'ai bien vérifié aussi que ma ligne n'est pas vide.

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const REG_MULTI_SZ = 7
Private Const HKEY_LOCAL_MACHINE = &H80000002
Const webdir = "d:\"


Sub Main()
Dim cle
Dim ligne
If Dir(webdir & "valreg.txt") <> "" Then
Open webdir & "valreg.txt" For Input As #1
Line Input #1, ligne
Close #1

For id_for = 1 To Len(ligne)
chaine_sz = chaine_sz & Mid(ligne, id_for, 1) & Chr(0)
Next
chaine_sz = chaine_sz & Chr(0)

RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\essai", 0, HKEY_ALL_ACCESS, cle
RegSetValueEx cle, "val", 0, REG_MULTI_SZ, chaine_sz, Len(chaine_sz)
RegCloseKey cle

End If
End Sub

Tu peut essayer de tester le code ya juste un fichier texte et une clé à créer dans le registre.Car là je désespère!

1 2

Cette discussion est classée dans : écrire, type, multi, reg, sz


Répondre à ce message

Sujets en rapport avec ce message

Écriture clé REG_MULTI_SZ ? [ par Nighty ] Bonjour,je cherche à savoir comment écrire dans les registres une clé dont la valeur est de type REG_MULTI_SZ. registrer -REG_MULTI_SZ [ par Charles Racaud ] Bonjour,Je fais un prog ou j'aurai besoin de sauver le contenu d'une listBox dans le registreJ'ai pensé a l'enregistrer en REG_MULTI_SZJ'utilise le co Lecture clé Reg_Multi_SZ [ par murphy01 ] Bonjour à tous,Voici mon problème, je cherche comment faire pour afficher le contenu d'une valeur reg_multi_sz de la registry dans une textbox ?Il s'a Ecrire dans la base de registre type REG_MULTI_SZ [ par parker13 ] Bonjour,Je viens de trouver comment LIRE dans la base de registre une valeur de type REG_MULTI_SZ.Set WSHShell = CreateObject("WScript.Shell") sRegP Renseignement base de registre [ par fransoze ] Bonjour,Je souhaiterai savoir si il y a une grande importance de definir le type (reg_dword, reg_sz, ...) d'une donnée.Comment peut on recuperer le ty VB6 Base de Registre Hexadecimal [ par madustbin ] Bonjour. Lorsque j'utilise l'instruction :Shell.RegWriteVB6 m'affiche une info Bulle contenant :RegWrite(Name As String,  Value, [Type]) Je souhaitera Base de registre [ par Crash_overide12 ] Bonjour,Dans le cadre du développement d'une application afin de changer l'ip de différentes cartes reseau, je suis ammener à inscrire des information auto type multi textbox [ par frazzled ] bonjour je suis debutan avec vb2008et je cherche a essayer de creer un spammer avec plusieur text boxje m'explique  je souhaite pouvoire envoyer une t Help... Base de registre [ par rgilles ] Bonjour, J'ai un problème je n'arrive pas à écrire une clé dans la base de registre en VB6 et Vista. Bien sûr ceci n'est pas pour un virus mais pour Diff entre REG_SZ et REG_DWORD ? [ par KaViDee ] Salut à tous,voila, je développe actuellement un soft qui utilise la base de registre mais j'ai merais savoir quelle est la différence entre une valeu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,749 sec (4)

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