Probleme Ecriture base de registre VB

Probleme Ecriture base de registre VB - VB/VBA/VBS - Programmation

Marsh Posté le 10-01-2009 à 22:16:11    

Salut a tous, je me remet a VB car je n'y avait pas touché depuis ....arf... Donc voila, je suis confronté a un problème: je souhaite creer une cle dans la base de registre. je me suis inspiré de codes trouver un peu partout pour parvenir a mes fin mais voila, lorsque je lance cette action dans mon appli, RIEN NE SE PASSE....
Plus concrètement, l'action que je veux effectuer serai de désactiver le clic droit sur le bureau, il faut donc crée la cle "NoViewContextMenu" dans "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" et lui attribuer une valeur DWORD de 0 ou 1 que l'on veuille ou non désactiver celui ci.
 
Je ne conanis pas trop encore VB, mais je pense avoir bien suivi les explications pour l'ecriture dans le registre...
 
Voici le code:
 
Declarations:
 

Code :
  1. Option Explicit
  2. 'API utilisée pour fermer une clé ouverte
  3. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
  4. 'efface une valeur de clé
  5. Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal Hkey As Long, ByVal lpValueName As String) As Long
  6. 'créé une clé registre
  7. Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  8. 'affecte une valeur
  9. 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
  10. 'clé root Hkey Local Machine
  11. Private Const HKEY_LOCAL_MACHINE = &H80000002
  12. Private Const HKEY_CURRENT_USER = &H80000001
  13. 'ZONE TEST CLE DWORD
  14. Private Const REG_DWORD = 4
  15. 'type de clé REG_SZ
  16. Private Const REG_SZ = 1


 
 
Fonctions a lancer:
 

Code :
  1. Public Sub RightClic(ByVal bActivateOrNot As Boolean, Optional ByVal sFile As Long)
  2. 'Fonction qui active (ou non) le clic droit sur le bureau
  3. 'C'est une simple création de valeur de clé :
  4. 'Dans la clé :
  5. 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
  6. 'il faut modifier une cle DWORD
  7. 'de nom=NoViewContextMenu
  8. 'avec valeur=0 pour activer
  9. 'ou valeur=1 pour desactiver
  10. Dim lRet As Long, sPath2 As String, sName As String
  11. 'path de la clé
  12. sPath2 = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
  13. 'nom de la clé
  14. sName = "NoViewContextMenu"
  15. If bActivateOrNot Then
  16.     '//on ajoute la clé
  17.     'créé la clé
  18.     RegCreateKey HKEY_CURRENT_USER, sPath2, lRet
  19.     'sauvegarde la string désirée dans la clé
  20.     RegSetValueEx lRet, sName, 1, REG_DWORD, ByVal sFile, 4
  21.     'ferme la clé
  22.     RegCloseKey lRet
  23. Else
  24.     '//on ajoute la clé
  25.     'créé la clé
  26.     RegCreateKey HKEY_CURRENT_USER, sPath2, lRet
  27.     'sauvegarde la string désirée dans la clé
  28.     RegSetValueEx lRet, sName, 1, REG_DWORD, ByVal sFile, 4
  29.     'ferme la clé
  30.     RegCloseKey lRet
  31. End If
  32. End Sub
  33. Private Sub rightClic_Off_Click()
  34. Dim sDonnee As String
  35. 'sDonnee est la valeur a attribuer a la clef: 0 pour desctiver, 1 pour activer
  36. sDonnee = 0
  37. RightClic False, sDonnee
  38. MsgBox "Clic Droit Sur le bureau desactivé", vbInformation, "Ok !"
  39. End Sub
  40. Private Sub rightClic_on_Click()
  41. Dim sDonnee As String
  42. sDonnee = 1
  43. RightClic True, sDonnee
  44. MsgBox "Clic Droit Sur le bureau activé", vbInformation, "Ok !"
  45. End Sub


 
 
je sais que sa peux saouler mais j'aimerai vraiment reussir a saisir comment effectuer l'ecriture dans la BDR, par exemple en connaissant a quoi correspondent les variables demandees...
 
Bref...jespere que vous reussirez a m'aider...
 
MERCI D'AVANNNCE!!

Reply

Marsh Posté le 10-01-2009 à 22:16:11   

Reply

Marsh Posté le 15-01-2009 à 10:13:12    

Va voir le site suivant http://files.codes-sources.com/fic [...] GISTRY.BAS
Ça devrait faire le tour de ta question.

Reply

Marsh Posté le 22-05-2012 à 12:03:43    

tegu a écrit :

Va voir le site suivant http://files.codes-sources.com/fic [...] GISTRY.BAS
Ça devrait faire le tour de ta question.


Gros déterrage de topic : quelqu'un a la vraie solution ? le code proposé stocke le DWORD sous forme de chaine et fait la conversion à la volée  :kaola:  
 
l'API RegSetValueEx stocke la valeur DWORD sous forme ASCII. Par exemple je veux écrire 123 (0x7B), la valeur réellement écrite est 0x00333231 !!! Bien sûr si on veut écrire une valeur > 9999 il y aura troncature.
 
J'ai rien trouvé sur le web  :fou:


---------------
La vie s'appelle suicide-toi, et le diable rit avec moi.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed