Suppression de clé de registre

Résolu
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 10 juin 2007 à 12:30
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 20 juin 2007 à 18:57
Bonjour à tous

Voici mon soucis :

J'ai une clé de registre qui s'appelle "Images" et qui se trouve dans "HKEY_CURRENT_USER\Mon Prog\Images"
Cette clé contient des éléments.
"HKEY_CURRENT_USER\Mon Prog\Images\fond1.jpg"
"HKEY_CURRENT_USER\Mon Prog\Images\fond2.jpg"

Je précise que mon profil n'est pas un profil administrateur (ceci pourrait expliquer la suite)

pour supprimer ma clé et l'ensemble des éléments à l'intérieur, j'ai voulu utiliser les procédures suivantes :

My.Computer.Registry.CurrentUser.DeleteSubKeyTree("HKEY_CURRENT_USER\Mon Prog\Images")
et
My.Computer.Registry.CurrentUser.DeleteSubKey("HKEY_CURRENT_USER\Mon Prog\Images")

Hélas pour moi, ces instructions sont sans effet.

J'aimerais savoir ce qui ne fonctionne pas et comment je peux y remédier

Par avance un grand merci  pour vos réponse

Bon Dimanche à tous

PhilouVB

4 réponses

cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
11 juin 2007 à 18:33
Bonsoir

En fait je viens de trouver la solution en étudiant l'index de vbnet.

Je suppose que ma clé s'appelle "Philou VB" et qu'elle se trouve dans la base de registre à "HKEY_CURRENT_USER"
il faut écrire :

Dim tempKey
As Microsoft.Win32.RegistryKey

Dim registryObject
As Microsoft.Win32.RegistryKey =
Nothing
registryObject =

My.Computer.Registry.CurrentUserregistryObject.DeleteSubKey(

"Philou VB")

Cela fonctionne sous un compte normal, administrateur...

J'essaierai de faire un code source prochainement pour montrer le fonctionnement de création, de lecture....

A bientot

PhilouVB
3
syxe_mpl Messages postés 58 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 20 décembre 2010
12 juin 2007 à 08:40
salut voici les 4 fonctions que j'utilise en permanance pour écrire, lire ou créer des informations dans la base de registre :
stapp = la structure d'information sur l'application

'déclaration des clefs de l'appli dans la BASE de Registre
Public Const Appl_Key_Principal As String = "Nom de la société "
Public Const Appl_Key_Appl As String = "Nom de l'application ..."

Avant d'appeler la fonction Charger_BaseRegistre_Application :StApp.Appli_Chemin = Environment.CurrentDirectory
StApp.ApplKey_Chemin = Class_Demarrage.Appl_Key_Principal +

"" + Class_Demarrage.Appl_Key_Appl 'mémorisation du chemin de la clef de l'appli de la Base de Registre

#

Region "Lecture/Ecriture Base de Registre"'charge la base de registre liée à l'application
Public Shared Sub Charger_BaseRegistre_Application()
   Dim Registre As Microsoft.Win32.RegistryKey
   Dim confappli As String
   'test lecture de la clefs d'information si logiciel bien initialisé ou non
   Try
      Registre = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(StApp.ApplKey_Chemin)
      confappli = CType(Registre.GetValue("Config_Appli"), String)
      If confappli <> "ConfigOk" Then
         'création de la base de registre par default 
         If Not Creation_Base_Registre() Then
            MessageBox.Show("Impossible de lancer application!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End
         End If
      End If
   Catch ex As Exception
      'erreur de lecture donc pas de présence de la clef d'initialisation donc création clef + chemin
      If Not Creation_Base_Registre() Then
         MessageBox.Show("Impossible de lancer application!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
         End
      End If
   End Try
   'lecture des info de la base de registre :
   Lecture_Base_Registre()
End Sub

'charge configuration de l'application à partir du fichier .ini de l'application
Public Sub Charger_Configuration_Application()

End Sub

' Lecture des info contenu dans la Base de registre pour cette application
Public Shared Sub Lecture_Base_Registre()
   Dim Registre As Microsoft.Win32.RegistryKey, keyport As Microsoft.Win32.RegistryKey
   Try
      'Ouverture de la clef de l'application de la Base de Registre
      Registre = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(StApp.ApplKey_Chemin)
      StApp.Config_portCOM = CType(Registre.GetValue("Port"), String)
   Catch ex As Exception
      MessageBox.Show("Erreur de chargement des paramétres de configuration du port com, utilisation PORT config usine : PORT COM1,38400,8,1,0,0", "Erreur..", MessageBoxButtons.OK, MessageBoxIcon.Error)
      StApp.Config_portCOM = "COM1,38400,8,1,0,0"
   End Try
   '---------------------------------------------------------------------------------------
   'ouverture dépendance 
   'DATABASE Serveur:
   Registre = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(StApp.ApplKey_Chemin)
   keyport = Registre.OpenSubKey("DB_Srv") 'ouverture dépendance linsting config Ports de l'application
   With StApp.Db_Serveur
      .adr = CType(keyport.GetValue("adr"), String)
      .log = CType(keyport.GetValue("log"), String)
      .psw = CType(keyport.GetValue("psw"), String)
      .db_name = CType(keyport.GetValue("db_name"), String)
      StApp.Freq_Purge_Db_Err = CInt(CType(keyport.GetValue("Freq_Purge_Mois"), String))
   End With
   'SERVEUR :
   StApp.clef_config = CType(Registre.GetValue("clef"), String)
   StApp.Freq_Scrut_Etat_Psrl = CInt(CType(Registre.GetValue("Freq_Scrut_Psrl"), String))
   StApp.Freq_Scrut_SMS = CInt(CType(Registre.GetValue("Freq_Scrut_SMS"), String))
   '---------------------------------------------------------------------------------------
   'Fermeture des clefs :
   keyport.Close()
   Registre.Close()
   '---------------------------------------------------------------------------------------
End Sub

' création de la Base de registre de l'application'
 Retourne : True = Ok création avec succés
' False = Erreur pendant la création par default !
Public Shared Function Creation_Base_Registre() As Boolean

   Dim Registre As Microsoft.Win32.RegistryKey, keyport As Microsoft.Win32.RegistryKey
   'création des clefs avec leur valeurs par default
      Try
         Registre = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(StApp.ApplKey_Chemin)
      Catch ex As Exception
         MsgBox("Erreur pendant la création des informations par defaut de l'application dans la Base de Registre !")
         Return False
      End Try
      Try
         'ouverture de la fenetre de 1er configuration :
         Dim f As New Fen_Config_Starting_Appli
         If f.ShowDialog <> Windows.Forms.DialogResult.OK Then
         MsgBox("Arrêt du Serveur Centrale SMS" + vbCrLf + "Erreur : configuration du serveur non acceptée, impossible de lancer ce dernier!", MsgBoxStyle.Critical, "ERREUR")
         Return False
      End If
      '.....................................................................................
      'PortCOM :
      Registre.SetValue("Port", f.rep.Config_portCOM)
      '.....................................................................................
      'DATABASE Serveur:
      keyport = Registre.CreateSubKey("DB_Srv")
      keyport.SetValue("adr", f.rep.Db_Serveur.adr)
      keyport.SetValue("log", f.rep.Db_Serveur.log)
      keyport.SetValue("psw", f.rep.Db_Serveur.psw)
      keyport.SetValue("db_name", f.rep.Db_Serveur.db_name)
      keyport.SetValue("Freq_Purge_Mois", f.rep.Freq_Purge_Db_Err.ToString)
      '.....................................................................................
      'fréquence scrutation état passerelle :
      Registre.SetValue("Freq_Scrut_Psrl", f.rep.Freq_Scrut_Etat_Psrl.ToString)
      Registre.SetValue("Freq_Scrut_SMS", f.rep.Freq_Scrut_SMS.ToString)
      '.....................................................................................
      'code d'accès
      Registre.SetValue("clef", f.rep.clef_config)
      '.....................................................................................
      Registre.SetValue("Config_Appli", "ConfigOk")
      Return True
   Catch ex As Exception
      Registre.SetValue("Config_Appli", "NON")
      Registre.Close()
      MsgBox("Erreur pendant la création des informations par defaut de l'application dans la Base de Registre !")
      Return False
   End Try
   Registre.Close()
End Function

Public Shared Function Save_Base_Registre() As Boolean
   'sauvegarde de la base de registre avec les éléments inclus dans la StApp destinés à la base
   'returne si enregistrement Ok ou non
   Dim Registre As Microsoft.Win32.RegistryKey, keyport As Microsoft.Win32.RegistryKey
   '---------------------------------------------------------------------------------------
   Try
      'ouverture de la base de registre
      Registre = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(StApp.ApplKey_Chemin, True)
   Catch ex As Exception
      MsgBox("Erreur à l'ouverture de la clef logiciel dans la base de registre.. impossible d'y enregistrer la configuration du logiciel!",
      MsgBoxStyle.Critical, "Erreur !")
      Return False
   End Try
   '---------------------------------------------------------------------------------------
   Try
      Registre.SetValue("Port", StApp.Config_portCOM) 'ouverture dépendance linsting config Ports de l'application
      '......................................................................................................
      'DATABASE Serveur
      keyport = Registre.OpenSubKey("DB_Srv", True) 'Db de listing d'erreur en tram recu !!
      With StApp.Db_Serveur
         keyport.SetValue("adr", .adr)
         keyport.SetValue("log", .log)
         keyport.SetValue("psw", .psw)
         keyport.SetValue("db_name", .db_name)
         keyport.SetValue("Freq_Purge_Mois", StApp.Freq_Purge_Db_Err.ToString)
      End With
      keyport.Close()
      '......................................................................................................
      Registre.SetValue("Freq_Scrut_Psrl", StApp.Freq_Scrut_Etat_Psrl) 'Port d'écoute du serveur TCP/IP
      Registre.SetValue("Freq_Scrut_SMS", StApp.Freq_Scrut_SMS) 'adr du serveur TCP/IP
      '......................................................................................................
      Registre.SetValue("clef", StApp.clef_config) 'clef d'accés à la config du serveur
      '......................................................................................................
      Registre.SetValue("Config_Appli", "ConfigOk") ' confirmation de la configuration du des clefs de registre
      '......................................................................................................
   Catch ex As Exception
   Registre.Close()
   MsgBox("Erreur pendant l'enregistrement de la config dans la base de registre.. Configuration non complète !",
   MsgBoxStyle.Critical, "Erreur !")
   Return False
   End Try
   '---------------------------------------------------------------------------------------
   'Fermeture des clefs
   keyport.Close()
   Registre.Close()
   '---------------------------------------------------------------------------------------
   Return True ' confirmation de l'enregistrement des datas dans la base de registre
   '---------------------------------------------------------------------------------------
End Function
3
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
20 juin 2007 à 18:57
Voilà, j'ai crée un petit code source comme convenu

J'espère que cela aidera du monde.

voici le lien

http://www.vbfrance.com/codes/BASE-REGISTRE_43194.aspx

A bientot

Philou VB
3
syxe_mpl Messages postés 58 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 20 décembre 2010
11 juin 2007 à 10:46
bonjour,
Personnelement si tu n'es pas en administrateur tu peux ajouter des éléments dans la base de registre mais je ne pense pas que tu puisses en supprimer !!! Je n'ai pas fait le test mais cela me paraitrait logique ! As tu essaié de le réaliser manuellement pour voir si déjà tu pouvais le réaliser avec les droits que tu as ?? Autre exemple, les fichiers et dossiers dans programmes files ne sont modifiables ou suppressible qu'avec des droits 'admin' !! C'est pour cela que je ne mais pas mes applications dans ce dossier par exemple. Donc ton problème peut venir de tes droits !? Pour en être sur réalise la même op avec les droits admin !
A+ et bon code !
-2
Rejoignez-nous