Registry-Wert schreiben/löschen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Arby.

    Registry-Wert schreiben/löschen

    Hey, da ich das mit den Werten in Registrierung schreiben mal ausprobieren wollte, hab ich eine kleine Anwendung erstellt, die, wenn man auf einen Button drückt, den Pfad einer Textdatei in "Run" schreibt. Das meine ich: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    Das funktioniert soweit auch ganz gut, ich denke aber, dass ich das nicht ganz richtig gelöst habe, da es z.B. ~hier~ ganz anders steht.
    Ich hab zum schreiben folgenden Code verwendet:

    VB.NET-Quellcode

    1. My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Test", "C:\Users\Johannes\Desktop\Test.txt")


    Nun möchte ich, dass der Wert mit einem klick auf einen weiteren Button gelöscht wird. Wie stelle ich das an?
    Kann der obenstehende Code zum schreiben so gelassen werden, oder gibts da noch einen "professionelleren" Weg?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Knato“ ()

    So kann man in einen vorhandenen SubKey etwas eintragen und entfernen. Für weiteres gugge dir mal in der MSDN dies hier an. Sei aber aüsserst vorsichtig bzw. lass es wenn du nicht weisst was was ist!!!
    msdn.microsoft.com/de-de/libra…trykey%28v=vs.110%29.aspx

    VB.NET-Quellcode

    1. 'Imports Microsoft.Win32
    2. Private regKey As RegistryKey
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. regKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", RegistryKeyPermissionCheck.ReadWriteSubTree)
    5. regKey.SetValue("testprog", "D:\pfadzumprog", RegistryValueKind.String)
    6. regKey.Close()
    7. End Sub
    8. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    9. regKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", RegistryKeyPermissionCheck.ReadWriteSubTree)
    10. regKey.DeleteValue("testprog")
    11. regKey.Close()
    12. End Sub

    Knato schrieb:

    oder gibts da noch einen "professionelleren" Weg?
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim key As Microsoft.Win32.RegistryKey = Nothing
    2. key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    3. key.DeleteValue("Test")
    4. key.Close()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    RegistryKey implementiert IDisposable, also wär die korrekte Vorgehensweise:

    VB.NET-Quellcode

    1. Using key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    2. key.DeleteValue("Test")
    3. End Using

    Oder ein key.Dispose() nach dem Close().
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    RushDen schrieb:

    Close () ruft automatisch Dispose () mit auf.

    Okay, ich nehm das dann mal so an. In der sagenumwobenen mit dem VS 2010 mitgelieferten Online-"Hilfe" *hust* steht das nicht dabei. Zumindest nicht in der Doku zur Close()-Methode.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.