none
c# (Registry Delete) RRS feed

  • Question

  • Bonjour a tous

    Voila j 'utilise cette commande pour essayer de supprimer une sous cle dans le registre mais une erreur me revient.

     

    private void btnDelete_Click(object sender, EventArgs e)
    {
    RegistryKey DateVal = Registry.CurrentUser.OpenSubKey(@"Software\MyRV\" + tDate.Text + @"\" + cboTime.Text);
    Registry.CurrentUser.DeleteSubKeyTree(DateVal.ToString());
    }

     

     

    je recoit toujors la meme erreur

     

      L'exception System.NullReferenceException n'a pas été gérée
      Message="La référence d'objet n'est pas définie à une instance d'un objet."
      Source="RegistryTest"
      StackTrace:
           à RegistryTest.Form1.btnDelete_Click(Object sender, EventArgs e) dans C:\Documents and Settings\Daniel Morais\Mes documents\Visual Studio 2008\Projects\RegistryTest\Form1.cs:ligne 75
           à System.Windows.Forms.Control.OnClick(EventArgs e)
           à System.Windows.Forms.Button.OnClick(EventArgs e)
           à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           à System.Windows.Forms.Control.WndProc(Message& m)
           à System.Windows.Forms.ButtonBase.WndProc(Message& m)
           à System.Windows.Forms.Button.WndProc(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.Run(Form mainForm)
           à RegistryTest.Program.Main() dans C:\Documents and Settings\Daniel Morais\Mes documents\Visual Studio 2008\Projects\RegistryTest\Program.cs:ligne 18
           à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Threading.ThreadHelper.ThreadStart()
      InnerException:

    et ca dit que je dois utiliser new  car n'existe pas dans le context

    Je comprend pas la! peut on maider la dessus.

     

    Merci


    BigDan
    mercredi 4 août 2010 19:32

Réponses

  • Bonjour,

    Voici le code corrigé :

    using (RegistryKey DateVal = Registry.CurrentUser.OpenSubKey(@"Software\MyRV\" + tDate.Text))
    {
      DateVal.DeleteSubKeyTree(cboTime.Text);
    }
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 4 août 2010 20:15
    Modérateur
  • Bonjour a toi Gilles

    encore moi

    ben voila j'ai trouver finallement avec ton snippet de code

    Ceci qui fonctionne

     

    using (RegistryKey DateVal = Registry.CurrentUser.OpenSubKey(@"Software\MyRV\" + tDate.Text, true))

    {

    DateVal.DeleteValue(cboTime.Text,

    false);

    }

    Merci encore


    BigDan
    jeudi 5 août 2010 04:48

Toutes les réponses

  • Bonjour,

    Voici le code corrigé :

    using (RegistryKey DateVal = Registry.CurrentUser.OpenSubKey(@"Software\MyRV\" + tDate.Text))
    {
      DateVal.DeleteSubKeyTree(cboTime.Text);
    }
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 4 août 2010 20:15
    Modérateur
  • Bonjour ou bonsoir

    Merci Gilles mais je recoit maintenat cette erreur

    L'exception System.UnauthorizedAccessException n'a pas été gérée
      Message="Impossible d'écrire dans la clé du Registre."
      Source="mscorlib"
      StackTrace:
           à System.ThrowHelper.ThrowUnauthorizedAccessException(ExceptionResource resource)
           à Microsoft.Win32.RegistryKey.EnsureWriteable()
           à Microsoft.Win32.RegistryKey.DeleteSubKeyTree(String subkey)
           à RegistryTest.Form1.btnDelete_Click(Object sender, EventArgs e) dans C:\Documents and Settings\Daniel Morais\Mes documents\Visual Studio 2008\Projects\RegistryTest\Form1.cs:ligne 77
           à System.Windows.Forms.Control.OnClick(EventArgs e)
           à System.Windows.Forms.Button.OnClick(EventArgs e)
           à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           à System.Windows.Forms.Control.WndProc(Message& m)
           à System.Windows.Forms.ButtonBase.WndProc(Message& m)
           à System.Windows.Forms.Button.WndProc(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.Run(Form mainForm)
           à RegistryTest.Program.Main() dans C:\Documents and Settings\Daniel Morais\Mes documents\Visual Studio 2008\Projects\RegistryTest\Program.cs:ligne 18
           à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Threading.ThreadHelper.ThreadStart()
      InnerException:

    encore plus perdu

    Merci


    BigDan
    jeudi 5 août 2010 02:42
  • Pour commencer Bonsoir ou bonjours

    Finalement j'ai trouver
    Mais ce que je comprend pas est que j'ai du reutiliser le la commande createsubkey
    pour parvenir a mes fins

    RegistryKey

     

    MyRV = Registry.CurrentUser.CreateSubKey(@"Software\MyRV");

    MyRV.DeleteSubKeyTree(tDate.Text);

    Cela supprime la ligne voulu mais je comprend pas pourquoi.  

    Merci encore


    BigDan
    jeudi 5 août 2010 03:25
  • Pour commencer Bonsoir ou bonjours

    Finalement j'ai trouver
    Mais ce que je comprend pas est que j'ai du reutiliser le la commande createsubkey
    pour parvenir a mes fins

    RegistryKey

     

    MyRV = Registry.CurrentUser.CreateSubKey(@"Software\MyRV");

     


    BigDan

    MyRV.DeleteSubKeyTree(tDate.Text);

    Cela supprime la ligne voulu mais je comprend pas pourquoi.  

    Merci encore


    Jai tres vite remarquer que cela supprimait tout la cle au complet et non les sous cle comme l'heure

    et je suis encore perdu


    BigDan
    jeudi 5 août 2010 04:15
  • Bonjour a toi Gilles

    encore moi

    ben voila j'ai trouver finallement avec ton snippet de code

    Ceci qui fonctionne

     

    using (RegistryKey DateVal = Registry.CurrentUser.OpenSubKey(@"Software\MyRV\" + tDate.Text, true))

    {

    DateVal.DeleteValue(cboTime.Text,

    false);

    }

    Merci encore


    BigDan
    jeudi 5 août 2010 04:48