Registry schlüssel umbenennen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    schau mal bitte hier

    msdn.microsoft.com/de-de/library/bb979300.aspx
    unter "
    Werte schreiben und löschen
    "
    Um in einen Registryzweig einen Schlüssel anlegen, ändern oder löschen
    zu können, ist es erforderlich, den beherbergenden Zweig mit
    Schreibzugriff zu öffnen. Dafür geben Sie als zweiten Parameter der OpenSubKey-Funktion den Wert True an.

    VB.NET-Quellcode

    1. Dim MeinKey As RegistryKey
    2. ' Einen Registryzweig zum Schreiben öffnen
    3. MeinKey = Registry.CurrentUser.OpenSubKey( _
    4. "Software\Microsoft\Windows\" _
    5. & "CurrentVersion\Explorer", True)
    6. ' Diverse Testschlüssel anlegen
    7. MeinKey.SetValue("Stringschlüssel", "Testwert")
    8. MeinKey.SetValue("Integerschlüssel", 65535I)
    9. ' Die angelegten Testschlüssel wieder löschen
    10. MeinKey.DeleteValue("Stringschlüssel")
    11. MeinKey.DeleteValue("Integerschlüssel")
    12. ' Den Registryzweig schließen
    13. MeinKey.Close()
    Denken Sie insbesondere nach der Verwendung eines Registryzweigs zum
    Schreiben von Werten daran, den Zweig nach Verwendung mithilfe der Close-Methode
    zu schließen! Geöffnete Schlüssel sollten Sie ohnehin generell wieder
    schließen, sobald Sie sie nicht mehr benötigen. Spätestens zum Zeitpunkt
    des Schließens werden auch evtl. bisher nur zwischengespeicherte
    Änderungen aus dem RAM-Cache auf die Festplatte weggespeichert.

    Möchten Sie sicherstellen, dass Ihre Änderungen geschrieben
    werden, obwohl Sie den zugehörigen Zweig noch nicht schließen möchten,
    verwenden Sie die parameterlose Methode Flush der Klasse RegistryKey für den entsprechenden Zweig.
    auf deutsch:

    du kopierst den key mit allem was drin ist in den neuen key so wie es aussehen soll
    danach löschst du den alten


    codeproject.com/KB/cs/RenameRegistryKey.aspx
    webnewsgroups.net/vbnet/t34459…ry-key-folder-branch.aspx

    ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Triple-Axe“ ()

    Schlüssel anlegen kann ich schon

    VB.NET-Quellcode

    1. Dim regKey As Microsoft.Win32.RegistryKey = _
    2. Microsoft.Win32.Registry.LocalMachine.CreateSubKey _
    3. ("SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
    4. regKey.SetValue("MeinProgrammName", Application.ExecutablePath)
    5. ' Das ist ein Autostart für alle benutzer



    aber ich möchte aus :

    HKEY_LOCAL_MACHINE\SOFTWARE\Test

    das machen:

    HKEY_LOCAL_MACHINE\SOFTWARE\Hello

    Also "Test" In "Hello" Umbenennen.

    "ich hatte dein Edit noch nicht gelesen :) "
    ich habe jetzt ein bischen gebastelt :

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Text
    3. Imports Microsoft.Win32
    4. Public Class Form1
    5. Dim key1 As Microsoft.Win32.RegistryKey
    6. Dim key2 As Microsoft.Win32.RegistryKey
    7. Private Sub RenameKey(ByVal SchlüsselName, ByVal NeuerSchlüsselName)
    8. Dim regKey As Microsoft.Win32.RegistryKey = _
    9. Microsoft.Win32.Registry.LocalMachine.CreateSubKey(NeuerSchlüsselName)
    10. key1 = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(NeuerSchlüsselName)
    11. key2 = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(SchlüsselName)
    12. CopyKEY()
    13. My.Computer.Registry.LocalMachine.DeleteSubKeyTree(SchlüsselName)
    14. End Sub
    15. Private Sub CopyKEY()
    16. Dim valueName As String
    17. For Each valueName In key2.GetValueNames()
    18. Dim objValue As Object = key2.GetValue(valueName)
    19. Dim valKind As RegistryValueKind = key2.GetValueKind(valueName)
    20. key1.SetValue(valueName, objValue, valKind)
    21. Next
    22. Dim sourceSubKeyName As String
    23. For Each sourceSubKeyName In key2.GetSubKeyNames()
    24. Dim sourceSubKey As RegistryKey = key2.OpenSubKey(sourceSubKeyName)
    25. Dim destSubKey As RegistryKey = key1.CreateSubKey(sourceSubKeyName)
    26. CopyKEY()
    27. Next
    28. End Sub
    29. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    30. Call RenameKey("SYSTEM\Test", "SYSTEM\dsss")
    31. MsgBox("Fertig")
    32. End Sub
    33. End Class

    aber es kommt immer ein fehler und er macht alles nur halb fertig. :(



    Fehler: Eine nicht behandelte Ausnahme des Typs "System.StackOverflowException" ist in mscorlib.dll aufgetreten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „200dvd“ ()

    jetz gehts zwar aber er kopiert nur die unter ordner nicht die unter unter ordner ;(

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Text
    3. Imports Microsoft.Win32
    4. Public Class Form1
    5. Dim key1 As Microsoft.Win32.RegistryKey
    6. Dim key2 As Microsoft.Win32.RegistryKey
    7. Private Sub RenameKey(ByVal SchlüsselName, ByVal NeuerSchlüsselName)
    8. Dim regKey As Microsoft.Win32.RegistryKey = _
    9. Microsoft.Win32.Registry.LocalMachine.CreateSubKey(NeuerSchlüsselName)
    10. key1 = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(NeuerSchlüsselName)
    11. key2 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(SchlüsselName)
    12. CopyKEY()
    13. ' My.Computer.Registry.LocalMachine.DeleteSubKeyTree(SchlüsselName)
    14. End Sub
    15. Private Sub CopyKEY()
    16. Try
    17. Dim valueName As String
    18. For Each valueName In key2.GetValueNames()
    19. Dim objValue As Object = key2.GetValue(valueName)
    20. Dim valKind As RegistryValueKind = key2.GetValueKind(valueName)
    21. key1.SetValue(valueName, objValue)
    22. Next
    23. Catch
    24. End Try
    25. Try
    26. Dim sourceSubKeyName As String
    27. For Each sourceSubKeyName In key2.GetSubKeyNames()
    28. Dim sourceSubKey As RegistryKey = key2.OpenSubKey(sourceSubKeyName)
    29. Dim destSubKey As RegistryKey = key1.CreateSubKey(sourceSubKeyName)
    30. key2 = sourceSubKey
    31. CopyKEY()
    32. Next
    33. Catch
    34. End Try
    35. End Sub
    36. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    37. Call RenameKey("SYSTEM\Test", "SYSTEM\sdv")
    38. MsgBox("Fertig")
    39. End Sub
    40. End Class