Registry OpenSubKey --> Der angeforderte Registrierungszugriff ist unzulässig.

DrMueller

Erfahrenes Mitglied
Hallo Leute,

erstmal bin ich ziemlicher Anfänger in vb.net.
Ich habe ziemliche Probleme bei downgrades, dass in der Registry in den verschiedenen DLLs falsche Keys drin stehen.
Da es ziemlich lästig ist, das manuell zu durchsuchen ,dachte ich, ich packe mal mein altes .net aus und versuche das.
Normalerweise würde ich das auf VB6 machen, aber dort mit Registry zu arbeiten ist mehr als übel.
Ich weiss von Anfang an, auf welcher Ebene diese Win32-Einträge sind und auch von wo aus ich suchen muss.
Daher ganz hässlich so gemacht:

Visual Basic:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim instance As RegistryKey
        instance = Registry.ClassesRoot
        Dim typelib As RegistryKey
        Dim cnt As Long
        Dim subR As RegistryKey
        Dim subR2 As RegistryKey
        Dim subR3 As RegistryKey
        Dim subR4 As RegistryKey
        Dim item As String
        Dim names() As String
        Dim str As String
        Dim str2 As String
        Dim str3 As String
        Dim str4 As String
        Dim names2() As String
        Dim names3() As String
        Dim names4() As String

        If Me.TextBox1 Is Nothing OrElse Me.TextBox1.Text.Length = 0 Then Exit Sub
        typelib = instance.OpenSubKey("TypeLib", True)
        names = typelib.GetSubKeyNames()
        For Each str In names
            subR = typelib.OpenSubKey(str, True)
            names2 = subR.GetSubKeyNames
            For Each str2 In names2
                subR2 = subR.OpenSubKey(str2, True)
                names3 = subR2.GetSubKeyNames
                For Each str3 In names3
                    subR3 = subR2.OpenSubKey(str3, True)
                    names4 = subR3.GetSubKeyNames
                    For Each str4 In names4
                        If str4.ToLower = "win32" Then
                            subR4 = subR3.OpenSubKey(str4, True)
                            If Not subR4.GetValue("") Is Nothing Then
                                If InStr(subR4.GetValue(""), Me.TextBox1.Text, CompareMethod.Text) Then
                                    Debug.Print(subR4.Name)
                                    subR3.DeleteSubKey(str4)
                                End If
                            End If
                        End If
                    Next
                Next
            Next
        Next
        subR = Nothing
        subR2 = Nothing
        subR3 = Nothing
        subR4 = Nothing
    End Sub


Sieht alles soweit schön aus, nur meldet er mir eben oben genannten Fehler bei der rot markierten Zeile.
Laut Internet liegt es an meiner Berechtigung, doch auch wenn ich das VS mit Adminrechte öffne kommt der Fehler. Ausserdem tritt er ja nicht beim ersten Opensubkey auf, daher nehme ich an, es ist etwas anderes.

Hat grad jemand eine Idee, was da der Fehler ist?




Wie immer danke ich im Voraus für alle Antworten und Anregungen


Müller Matthias
 
Hiho, habs gestern in der Nacht nochmal gedebbugt und mir ist aufgefallen, dass es tatsächlich nur bei einigen Ebenen auftritt. Anscheinend gibt es Registry-Keys, welche man auch mit Adminrechten nicht als Edit öffnen kann.
Ich nehme diese daher per resume next raus und mache nur weiter für diese Ebene, wenn err = 0.
 
Zurück