News... | Hack-Acad | Downloads | Web-Projekte | System-Check | Kontakt
HACKACAD - C# - Registry Keys

Folgender Code zeigt das Basiswissen zum Anlegen/Löschen von Schlüsseln und Werten in der Registry. Try/Catch ist nur Beispielhaft angemerkt. Die relevanten Klassen sind Registry und RegistryKey:

  Source Code:
 
 
 using System;
 using Microsoft.Win32;
 using System.Security; 
 using System.Security.Permissions; 

 namespace RegKeys
 {
   class Class1
   {
       static void Main(string[] args)
       {
          RegistryKey rk = Registry.CurrentUser;

          Console.WriteLine("There are {0} subkeys under {1}.", 
                             rk.SubKeyCount.ToString(), rk.Name);
						
          try
          {
             rk.CreateSubKey("TestKey");

             Console.WriteLine("There are {0} subkeys under {1}.", 
                                rk.SubKeyCount.ToString(), rk.Name);
          }
          catch
          {
             Console.WriteLine("Fehler CreateSubKey.");
          }

          try
          {
             rk = rk.OpenSubKey("TestKey", true);//);
				
             Console.WriteLine("\n ... Registry Pfad: {0}", rk.Name);
             Console.WriteLine("\t values:");
				
             foreach(string valueName in rk.GetValueNames())
             {
                Console.WriteLine("\t {0,-8}: {1}", valueName, 
                rk.GetValue(valueName).ToString());
             }

             rk.SetValue("TestEintrag","TestValue");

             Console.WriteLine("\t new value is set:");
				
             foreach(string valueName in rk.GetValueNames())
             {
                Console.WriteLine("\t {0,-8}: {1}", valueName, 
                                    rk.GetValue(valueName).ToString());
             }

             rk.DeleteValue("TestEintrag");
				
             Console.WriteLine("\t Value is deleted:");
				
             foreach(string valueName in rk.GetValueNames())
             {
                Console.WriteLine("\t {0,-8}: {1}", valueName, 
                                   rk.GetValue(valueName).ToString());
             }
          }
          catch(ArgumentNullException e) 
          {
             Console.WriteLine("Fehler ArgumentNullException");
          }
          catch(ArgumentException e) 
          {
             Console.WriteLine("Fehler ArgumentException");
          }
          catch(ObjectDisposedException e) 
          {
             Console.WriteLine("Fehler ObjectDisposedException");
          }
          catch(UnauthorizedAccessException e) 
          {
             Console.WriteLine("Fehler UnauthorizedAccessException");
          }
          catch(SecurityException e) 
          {
             Console.WriteLine("Fehler SecurityException");
          }

          rk = Registry.CurrentUser;
          try
          {				
             rk.DeleteSubKey("TestKey");

             Console.WriteLine("\nThere are {0} subkeys under {1}.", 
                                rk.SubKeyCount.ToString(), rk.Name);
          }
          catch
          {
             Console.WriteLine("Fehler DeleteSubKey.");
          }
			
          foreach(string subKeyName in rk.GetSubKeyNames())
          {
             Console.WriteLine("{0}", subKeyName);				
          }

          Console.WriteLine("\n...done... ");
          Console.ReadLine();
       }
   }
 }